黑马程序员技术交流社区

标题: 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