今天看到一个关于java初始化顺序的问题,以往从来没有意识到这个初始化的顺序竟然如此有趣,下面为自己编写的一个关于验证初始化顺序的小Dome
package test;
import static test.PrintDome.*;
public class InitOrder {
public static void main(String[] args) {
// TODO Auto-generated method stub
House house = new House();
house.printMess();
}
}
class Window{
Window(int num){
print(num);
}
}
class House{
Window w1 = new Window(1);
House(){
print("Hourse()");
Window w2 = new Window(2);
}
Window w3 = new Window(3);
public void printMess(){
print(4);
}
Window w4 = new Window(5);
}
运行结果如下:
1
3
5
Hourse()
2
4
原来每次初始化都会先初始化当前方法中所有的构造器,且是最内层的构造器最先初始化,如运行结果所示非常清晰。