I have read an article before that talks about this order issue. importNew上面的,找了找没找到。类加载都是先加载父类的static属性和块,然后加载本身的static属性和块,顺序都是从上往下的。构造对象的时候,总是先调用父类的构造器,然后调用自身的构造器。你上面的例子,首先加载App类,谁想它第一个static属性竟然需要构造一个自身类型的对象,这就直接跳过其他static属性和块到了App的构造器了,构造器里本身就一句要打印一个4,但是程序在编译后会把SubClass t = new SubClass();加入到构造器上方的,这个你可以查看一下编译生成的字节码文件,然后转而去加载和构造SubClassObjects and order are all mentioned above.
I have read an article before that talks about this order issue.
importNew
上面的,找了找没找到。类加载都是先加载父类的static
属性和块,然后加载本身的static属性和块,顺序都是从上往下的。构造对象的时候,总是先调用父类的构造器,然后调用自身的构造器。你上面的例子,首先加载App
类,谁想它第一个static
属性竟然需要构造一个自身类型的对象,这就直接跳过其他static
属性和块到了App
的构造器了,构造器里本身就一句要打印一个4
,但是程序在编译后会把SubClass t = new SubClass();
加入到构造器上方的,这个你可以查看一下编译生成的字节码文件,然后转而去加载和构造SubClass
Objects and order are all mentioned above.Can you do breakpoint debugging? You can use eclipse breakpoints to debug and see the execution sequence of the code and snapshots of the data