先给结论:
1 类加载从上往下执行,依次执行静态的初始化语句和初始化块,而且类加载优先于对象创建。(静态初始化语句和初始化块只加载一次)
2创建本类的对象时:从上往下执行一次非静态的初始化语向和初始化块,然后执行构造函数。
3 创建另一个类对象时:先加载另一个类的静态语句和静态初始化块(同样也只时第一次才会加载他的静态语句和初始化块,同样也只加载一次)。然后再加载其他类的非静态的初始化语向和初始化块,然后执行构造函数。
4 静态语句初始化时可以创建类对象
5静态方法可以只加载而不调用
接着看结果
代码
public class InitializeDemo {
public static int print(String str) {
System.out.println((k++) + ":" + str + " i=" + i + " n=" + n);
++n;
return ++i;
}
public static int print() {
System.out.println((k++) + ":"+ "