在我之前的问题Java 类和静态块的上下文中,如果我将代码从静态块和变量更改为普通的实例初始化块和实例变量会怎样。现在代码将如何执行?
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?