在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
public class OrderOfInit {
public static void main(String[] args) {
// TODO Auto-generated method stub
House house = new House();
house.f();
}
}
class Window{
Window(int marker){
System.out.println("Window("+marker+")");
}
}
class House{
Window w1 = new Window(1);
House(){
System.out.println("House()");
w3 = new Window(33);
}
Window w2 = new Window(2);
void f(){
System.out.println("f()");
}
Window w3 = new Window(3);
}
运行结果是:
Window(1)
Window(2)
Window(3)
House()
Window(33)
f()
可以看到执行顺序是:变量>构造器方法>普通方法