クラス初期化子
別名、静的初期化子。
1 public class Hello { 2 //フィールド 3 4 5 //コンストラクタ 6 7 8 //クラス初期化子 9 static { 10 System.out.println("Hello World"); 11 } 12 13 14 //メソッド 15 16 }
クラス内のフィールド、コンストラクタ、メソッドの記述は省略。
1 public class HelloTest { 2 3 public static void main(String[] args) { 4 Hello hello = new Hello(); 5 Hello hello2 = new Hello(); 6 } 7 8 }
実行結果
$ javac Hello.java $ javac HelloTest.java $ java HelloTest Hello World $
クラス初期化子の実行タイミング
クラスが初めて利用されるとき
注意事項
クラス初期化子は一度だけ
クラス初期化子は一度しか実行されない
クラスHelloTestでは以下のように、クラスHelloに2度関わっている。
Hello hello = new Hello(); Hello hello2 = new Hello();
しかし、実行結果を見て分かるように、"Hello World"は一度しか出力されていない。