LoginSignup
0
0

Java Silver向け 例題 staticイニシャライザとインスタンス初期化子の問題

Last updated at Posted at 2024-04-03

次のコードの出力結果を答えてください。

public class AbcdExample {
    static {
        System.out.println("ABCD");
    }

    public static void main(String[] args) {
        System.out.println("EFGH");
        AB member = new AB();
        AB number = new AB();
    }
}


class AB {
    AB() {
        System.out.println("AB");
    }
    {
        System.out.println("CD");
    }
    static {
        System.out.println("EF");
    }
}

正解







ABCD
EFGH
EF
CD
AB
CD
AB
  1. abcdExample クラスの静的初期化子が実行されます。静的初期化子はクラスがロードされる際に一度だけ実行されます。そのため、最初に "ABCD" が出力されます。

  2. main メソッドが実行されます。"EFGH" が出力されます。

  3. AB クラスの静的初期化子が実行されます。同様に、これもクラスがロードされる際に一度だけ実行されます。そのため、"EF" が出力されます。

  4. AB クラスのインスタンス member が生成されます。この時点で、インスタンス初期化子(インスタンスブロック)が実行され、"CD" が出力されます。次に、コンストラクタが実行され、"AB" が出力されます。

  5. 同様に、AB クラスのインスタンス number が生成されます。これも同じく、インスタンス初期化子が実行され、"CD" が出力され、その後コンストラクタが実行され、"AB" が出力されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0