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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廖成 中级黑马   /  2013-1-26 23:33  /  1173 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class SingleTon {
  2.    
  3.     private static SingleTon singleTon = new SingleTon();
  4.    
  5.     public static int a;
  6.    
  7.     public static int b = 0;
  8.    
  9.     private SingleTon () {
  10.         
  11.         a++;
  12.         b++;
  13.     }
  14.    
  15.     public static SingleTon getInstance() {
  16.         
  17.         return singleTon;
  18.     }
  19. }

  20. public class Test {
  21.    
  22.     public static void main(String[] args) {
  23.         
  24.         SingleTon singleTon = SingleTon.getInstance();
  25.         
  26.         System.out.println(" a is "+singleTon.a);
  27.         System.out.println(" b is "+singleTon.b);
  28.     }
  29.    
  30. }
复制代码
求接输出结果:


答案及分析:
输出结果是:
a is 1
b is 0

分析:SingleTon 类是一个单例类,当在程序入口main方法中获得SingleTon 实例的时候,jvm会初始化所有静态变量,SingleTon = null,int a会赋值0,int b也会赋值0,然后SingleTon = new SingleTon(),在构造方法中a++,b++,a=1;b=1。程序这时候再往下执行,到了输出,调用a,这时候a没有被再次赋值,所以a就是1,但是b被再次赋值了b=0,所有b就是0 了。输出结果就是上面的结果。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
嗯,听清楚的~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马