【发布时间】:2018-01-11 21:10:19
【问题描述】:
我的理解是,你不能在声明变量之前引用它,并且在类的主体内但在任何方法之外的所有代码(包括实例初始化程序)都会在构造函数之前按顺序执行,当对象被创建(例外是static 变量和初始化块,它们在程序开始时按顺序运行,以初始化整个类)。那么,为什么下面的代码会编译(并运行!):
public class WhyIsThisOk {
{ a = 5; } // why is this ok???
int a = 10;
public WhyIsThisOk() {
}
public static void main(String[] args) {
WhyIsThisOk why = new WhyIsThisOk();
System.out.println(why.a); // 10
}
}
【问题讨论】:
-
您可能还应该写下它打印的内容(我猜是 5 个?)
-
打印 10。因为这是最后一组
标签: java instance-initializers