初始化顺序问题,为什么会这样?

月凉西厢 月凉西厢 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
package com.mengdd.classloader;

class Singleton {

// private static Singleton mInstance = new Singleton();// 位置1
// 位置1输出:
// counter1: 1
// counter2: 0
public static int counter1;
public static int counter2 = 0;

private static Singleton mInstance = new Singleton();// 位置2

// 位置2输出:
// counter1: 1
// counter2: 1

private Singleton() {
counter1++;
counter2++;
}

public static Singleton getInstantce() {
return mInstance;
}
}

public class Test1 {

public static void main(String[] args) {

Singleton singleton = Singleton.getInstantce();
System.out.println("counter1: " + Singleton.counter1);
System.out.println("counter2: " + Singleton.counter2);
}
}

我知道这样的输出结果是由于初始化顺序造成的,但是构造方法为什么会先于静态代码执行?
private static Singleton mInstance = new Singleton();这句到底执行了什么?
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
月凉西厢
Java SE 62,620 成员 307,251 内容