java初始化问题
无意中看到这样一个程序段:
class Singleton {
private static Singleton obj = new Singleton();
public static int counter1;
public static int counter2 = 0;
private Singleton() {
counter1++;
counter2++;
}
public static Singleton getInstance() {
return obj;
}
}
public class MyMain {
public static void main(String[] args) {
Singleton obj = Singleton.getInstance();
System.out.println("obj.counter1=="+obj.counter1);
System.out.println("obj.counter2=="+obj.counter2);
}
}
自己预期结果:
obj.counter1==1
obj.counter2==1
实际运行一下得到如下结果:
obj.counter1==1
obj.counter2==0
发现自己解释不了,谁来帮忙解释下这个问题。另外调整 private static Singleton obj = new Singleton(); 这行代码位置,输出结果也有所不同。