public class StaticTest {
private static StaticTest stObj=new StaticTest();
private static int VAR1=10;
private static final int VAR2=20;
public StaticTest() {
System.out.println("Var1 : "+VAR1);
System.out.println("Var2 : "+VAR2);
}
public static void main(String[] args) {
System.out.println("VAR1 after constrution : "+StaticTest.VAR1);
}
}
出力:のJava差
VAR1:0 VAR2:constrution後20 VAR1:10
なぜVAR1とVAR2は、この異なる挙動?
VAR2は定数ですが、VAR1は単純な静的変数です。これは、stObjが初期化された後にVAR1が初期化されることを意味します。 VAR1が最初の呼び出しでは0(デフォルトのint値)、2番目の呼び出しでは10です。 – dexametason