黑马程序员技术交流社区
标题:
counter1和counter2的值为什么不相等呢?
[打印本页]
作者:
Liveei
时间:
2015-8-22 20:46
标题:
counter1和counter2的值为什么不相等呢?
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==0
counter1和counter2的值为什么不相等呢?{:3_46:}
作者:
氕氘氚
时间:
2015-8-22 21:40
obj = new Singleton();执行完后,会继续执行成员变量的显示化
作者:
忧伤-hy
时间:
2015-8-22 21:41
好好好,加油啊
作者:
蓬头小道士
时间:
2015-8-22 22:11
这是关于语句执行的先后顺序了,Singleton obj = Singleton.getInstance();等同于Singleton obj=new Singleton();创建对象后先进行默认初始化counter1++,counter2++执行,结果为1,1。然后进行对象特有属性显示初始化count1仍为1,count2被重新赋值为0.所以结果为1,0.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2