为了账号安全,请及时绑定邮箱和手机立即绑定

java的一个问题,看下下面的程序为啥a是1,b是0呢?

java的一个问题,看下下面的程序为啥a是1,b是0呢?

慕容708150 2018-07-22 06:05:27
public class Singleton { public static Singleton singleton = new Singleton();      public static int a;      public static int b = 0;     private Singleton() {           super();           a++;           b++;       }      public static Singleton GetInstence() {           return singleton;       }          public static void main(String[] args) {           Singleton mysingleton = Singleton.GetInstence();           System.out.println(mysingleton.a);           System.out.println(mysingleton.b);       }  }
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

1、public static Singleton singleton = new Singleton(); 这句代码把最原始的a,没赋值系统默认为0,通过a++赋值为1,b通过b++赋值为1

2、public static int a; 初始化a,因为a没被赋值则维持原来的1

3、public static int b = 0;初始化b,因为有赋值则,b的值由1改为0


查看完整回答
反对 回复 2018-07-23
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

要明白static的作用,暂且把它作为c语言包里卖弄的全局变量,所以要知道创建单个实例无法改变变量,在变量声明中,a尚未赋值,b已赋值为0,所以在你主方法里面无法改变,至于a在super被赋值,相当于已经在内存中赋值了,随后也不可改变,所以a=1,b=0

查看完整回答
反对 回复 2018-07-23
  • 3 回答
  • 0 关注
  • 327 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信