正常来说一个类的初始化过程应该是:
1、全局静态变量
2、静态代码块
3、全局变量
4、代码块
5、构造器
有这么一个例子:
public class LoadTest {
//全局静态变量
static int staticI = 10;
//全局变量
int i = 20;
//构造器
private LoadTest() {
System.out.println("staticI="+staticI);
System.out.println("i="+i);
}
//单例
private static LoadTest instance = new LoadTest();
//静态代码块
static {
staticI = 100;
}
//代码块
{
i = 200;
}
public static LoadTest getInstance() {
return instance;
}
//main方法
public static void main(String[] args) {
LoadTest.getInstance();
}
}
运行此程序,输出结果为:
staticI=10
i=200
也就是说在执行构造方法LoadTest方法时,代码块:
{
i = 200;
}
执行了,而静态代码块:
static {
staticI = 100;
}
却没有执行,这是什么原因呢?