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

java变量初始化

class Singleton {    
    private static Singleton singleton = new Singleton();    
    public static int counter1;    
    public static int counter2 = 0;    
    private Singleton() {
        counter1++;
        counter2++;
    }    
    public static Singleton getInstance() {       
         return singleton;
    }
}
public class TestSingleton {
    public static void main(String[] args) {
        Singleton s = Singleton.getInstance();
        System.out.println(Singleton.counter1);
        System.out.println(Singleton.counter2);
    }
}

输出结果是1,0

为什么

正在回答

1 回答

Java对于静态成员变量的初始化,分解为两步执行。

1. 根据静态成员变量在代码中的先后次序进行声明并赋值为缺省值2. 在静态块内依次为变量进行赋值


1 回复 有任何疑惑可以回复我~
#1

孤僻成瘾 提问者

这个代码里并没有静态块, private static Singleton singleton = new Singleton();也是不理解,jvm把静态变量加载到内存后,new后起作用吗?
2018-09-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409777    人
  • 解答问题       4341    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

java变量初始化

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号