次のシナリオ パッケージ com.example.test; があります。
public class StaticTest {
public static final String STATIC_VAR="Static Var";
static{
System.out.println("Static Block Called....");
}
public static void init(){}
}
package com.example.test;
public class MainClass {
public static void main(String[] args) {
System.out.println("Test static initialization");
String staticvar =StaticTest.STATIC_VAR;
System.out.println("Referred static variable--> "+ staticvar);
System.out.println("Calling static method");
StaticTest.init();
System.out.println("Static method invoked");
}
}
私が得ている出力は
Test static initialization
Referred static variable--> Static Var
Calling static method
**Static Block Called....**
Static method invoked
そして、私が期待していた出力は
Test static initialization
**Static Block Called....**
Referred static variable--> Static Var
Calling static method
Static method invoked
静的変数を参照するとすぐに静的ブロックが実行されると考えていました。
説明はありますか?