对于一个类的初始化步骤:
1 static静态的变量定义;
2 static块里的代码执行,static变量也是在此刻初始化的
3 非static变量定义
4 构造器
5 非static变量初始化
比如:
class test{
private static int a=1;
private int b=1;
public test(){
b=2;
}
}
执行new test();的时候编译后代码顺序为:
private static int a;
static{
a=1;
}
{
private int b;
}
public test(){
b=1;
b=2;
}
ps:有句口诀叫静静动构动构.....
就是类初始化顺序,意思是:
静静只有类第一次加载执行,静态变量定义-->静态块
动构就是,非static的定义初始化。我上面的代码位置调换中b=1是相当与在那个位置执行
楼上的屁话
谁说构造函数里也不可以调用构造函数?
误人子弟
用户不可以调用构造函数。还不明白就在线说。