张龙JVM001中的Singleton

来源:互联网 发布:交通规划软件transcad 编辑:程序博客网 时间:2024/05/16 19:32
package com.zeph.jvm1;public class Singleton {private static Singleton singleton = new Singleton();public static int a;public static int b = 0;private Singleton() {a++;b++;}public static Singleton getSingleton() {return singleton;}public static void main(String[] args) {Singleton singleton = Singleton.getSingleton();System.out.println(singleton.a);System.out.println(singleton.b);}}

 输出1和0,调用类的静态方法,主动加载类,但尚未初始化,然后初始化,首先初始化new Singleton(),此时a=1,b=1,然后初始化b=0,于是输出1和0

package com.zeph.jvm1;public class Singleton {public static int a;public static int b = 0;private static Singleton singleton = new Singleton();private Singleton() {a++;b++;}public static Singleton getSingleton() {return singleton;}public static void main(String[] args) {Singleton singleton = Singleton.getSingleton();System.out.println(singleton.a);System.out.println(singleton.b);}}
输出1和1
反之,最后初始化newSingleton,所以是1和1


原创粉丝点击