结论
注意 只有显式的加载类 JVM才会加载到内存中
- 先加载父类的静态代码块 然后执行子类静态代码块
- 当前类存在类静态变量注意引用类型没进行赋值操作初始化为null 并不会显式的加载类又存在静态代码块 会先执行前者进行初始化 再执行静态代码块
- 在实例化类的时候 执行顺序 构造代码块-->构造方法存在父类先执行父类
- 注意 静态成员变量/静态代码块只在JVM运行时 类加载到内存的时候执行一次
- public class Test {
- static B b=new B(); //这里存在实例 会加载类B 类A
- A a =new A();
- static {
- System.out.println("test static");
- }
- public Test(){
- System.out.println("test constructor");
- }
- {
- System.out.println("test module");
- }
- public static void main(String[] args) {
- //A1-->B1-->A2-->A3-->B2-->B3-->TEST STATIC
- }
- }
- class A{
- static {
- System.out.println("A1");
- }
- {
- System.out.println("A2");
- }
- public A(){
- System.out.println("A3");
- }
- }
- class B extends A{
- static {
- System.out.println("B1");
- }
- {
- System.out.println("B2");
- }
- public B(){
- System.out.println("B3");
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |