A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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:}

3 个回复

倒序浏览
obj = new Singleton();执行完后,会继续执行成员变量的显示化
回复 使用道具 举报
忧伤-hy 来自手机 中级黑马 2015-8-22 21:41:23
藤椅
好好好,加油啊
回复 使用道具 举报
这是关于语句执行的先后顺序了,Singleton obj = Singleton.getInstance();等同于Singleton obj=new Singleton();创建对象后先进行默认初始化counter1++,counter2++执行,结果为1,1。然后进行对象特有属性显示初始化count1仍为1,count2被重新赋值为0.所以结果为1,0.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马