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 Переменная2 20 VAR1 после constrution: 10
Почему это различное поведение для VAR1 и var2?
VAR2 является постоянным значением, но VAR1 является простой статической переменной. Это означает, что VAR1 будет инициализирован после инициализации stObj. Вот почему VAR1 равен 0 [значение по умолчанию int init] при первом вызове и 10 после второго вызова. – dexametason