正常来说一个类的初始化过程应该是:
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;
}`
却没有执行,这是什么原因呢?
1、全局静态变量
2、静态代码块
静态变量是按照定义的先后顺序执行的,你这上面有三个静态,三个是按照顺序执行
static int staticI = 10;
private static LoadTest instance = new LoadTest();
//静态代码块
static {
staticI = 100;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。