public class Singleton {
private static Singleton obj = new Singleton();
private static int counter1;
private static int counter2=0;
private Singleton(){
counter1++;
counter2++;
}
public static Singleton getSingleton(){
return obj;
}
public static void main(String[] args) {
Singleton.getSingleton();
System.out.println(counter1);
System.out.println(counter2); }
}结果为什么是:
1
0请求达人详解
private static Singleton obj = new Singleton();
private static int counter1;
private static int counter2=0;
private Singleton(){
counter1++;
counter2++;
}
public static Singleton getSingleton(){
return obj;
}
public static void main(String[] args) {
Singleton.getSingleton();
System.out.println(counter1);
System.out.println(counter2); }
}结果为什么是:
1
0请求达人详解
你这样输出当然是1了,那你在输出就是2了。
这是自加的运算符,先赋值再加1.counter2++;
这个和上面是一样的啊。
public class Singleton {
private static Singleton obj = new Singleton();
private static int counter1;
private static int counter2 = 0; private Singleton() {
counter1++;
counter2++;
} public static Singleton getSingleton() {
return obj;
} public static void main(String[] args) {
Singleton.getSingleton();
System.out.println(counter1);
System.out.println(counter2); }
}
首先执行第一行红的代码,把counter1和counter2都变成1
然后再执行第2个红行,吧counter2变成了0呵呵,这是我自己看的,也没有什么理论依据...
先执行
private Singleton(){
counter1++;
counter2++;
}
再执行
private static int counter2=0;
结果当然是 1 0如果改成
private static int counter1;
private static int counter2 = 0;
private static Singleton obj = new Singleton();
结果就是
1
1