java变量初始化

来源:4-9 学生选课---应用泛型管理课程 Ⅰ

孤僻成瘾

2018-09-26 17:34

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回答

  • qq_你若安好便是晴天_23
    2018-09-26 23:15:43

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

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


    孤僻成瘾

    这个代码里并没有静态块, private static Singleton singleton = new Singleton();也是不理解,jvm把静态变量加载到内存后,new后起作用吗?

    2018-09-27 22:18:18

    共 1 条回复 >

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题