- クラスを利用するときに一度だけ呼び出される初期化ブロック
- オブジェクトの初期化時ではなく、クラス自身の初期化時に実行される
- 複数のstaticイニシャライザが定義されている場合はコードに書かれた順序で事項される
- JVMによって自動的に実行されるメソッドであり、任意に実行できるメソッドではない
- staticイニシャライザを処理している最中にエラーが発生した場合、 ExceptionInitializetionError を発生させる
- staticイニシャライザは複数記述することができ、上から順に実行される
public class Main {
private static String test;
static {
test = "Hello World!";
}
public static void main(String[] args){
System.out.println(test);
}
}
- 変数testに aaaaa が代入される
- staticイニシャライザ(初期化ブロック)が実行される
- コンストラクタの呼び出し
public class Main {
private static String test = "aaaaaa";
static {
System.out.println("initialize");
test = "Hello World!";
}
public Main(){
System.out.println("exec constructor");
}
public static void main(String[] args){
Main sample = new Main();
System.out.println(sample.test);
}
}
initialize
exec constructor
Hello World!