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

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入门第三季
  • 参与学习       409790    人
  • 解答问题       4340    个

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

进入课程

java变量初始化

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信