猿问

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

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);  
     }  
}


慕容708150
浏览 328回答 3
3回答

慕姐4208626

1、public static Singleton singleton = new Singleton(); 这句代码把最原始的a,没赋值系统默认为0,通过a++赋值为1,b通过b++赋值为12、public static int a; 初始化a,因为a没被赋值则维持原来的13、public static int b = 0;初始化b,因为有赋值则,b的值由1改为0

子衿沉夜

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