前の質問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 になるのはなぜですか?