java程序题,懂java的请进!!!解释一下为什么??谢谢!!!

2025-04-29 11:29:02
推荐回答(2个)
回答1:

java对没有初始化的默认值是0;前一段程序在生成对象的时候也就是执行
private static Singleton singleton = new Singleton();的时候还没有执行
private static int count1;
private static int count2 = 0;
private static int count3 = 0;
这三句所以结果是1 1 1但是接下来又执行了上面的三句所以第二个值和第三个值就被人为的改变了。
第二段程序就不一样了它是初始化后在执行private static Singleton singleton = new Singleton();的所以结果就是1 1 1了

回答2:

就是构造方法调用先后的问题,
第一个先调用了
private Singleton(){
count1++;
count2++;
count3++;
}
再设置
private static int count1;
private static int count2 = 0;
private static int count3 = 0;

第二个,就相反。