【发布时间】:2014-09-14 08:37:35
【问题描述】:
在我之前的问题Java classes and static blocks 的上下文中,如果我将代码从静态块和变量更改为普通的实例初始化块和实例变量会怎样。现在代码将如何执行?
class extra3 {
public static void main(String string[]) {
Hello123 h = new Hello123();
System.out.println(h.a);
}
}
class Hello123 {
{
a=20;
}
int a=158;
}
在这里我得到的输出为 158。我无法理解这里的原因。其他代码是这样的:
class extra3 {
public static void main(String string[]) {
Hello123 h = new Hello123();
System.out.println(h.a);
}
}
class Hello123 {
int a=158;
{
a=20;
}
}
这里的输出是 20,这是可以接受的,因为创建对象时首先执行实例块。但是为什么第一个代码的输出是 158 呢?
【问题讨论】:
-
我所看到的,代码是串行执行的,应该是这样的。
标签: java instance-variables initialization-block