根据我之前的问题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?