10

类加载的时候静态代码块和构造函数执行顺序,附代码,求看看

public class SingletonTest {
    public static void main(String[] args) {
        SingletonT1.getInstance();
        SingletonT2.getInstance();
    }
}

class SingletonT1 {
    private static SingletonT1 instance = new SingletonT1();

    static {
        System.out.println("静态代码块1");
    }

    private SingletonT1 () {
        System.out.println("构造方法1");
    }

    public static SingletonT1 getInstance() {
        System.out.println("创建方法1");
        return instance;
    }
}

class SingletonT2 {
    private static SingletonT2 instance;
    static {
        System.out.println("静态代码块2");
        instance = new SingletonT2();
    }

    private SingletonT2() {
        System.out.println("构造函数2");
    }

    public static SingletonT2 getInstance() {
        System.out.println("创建方法2");
        return instance;
    }
}
构造方法1
静态代码块1
创建方法1
静态代码块2
构造函数2
创建方法2

以上是代码以及输出,不是说静态代码块是在构造函数之前执行的吗,为什么Singleton1是反的,小白,勿喷,真心求解

查看全部
weixin_43269092
丁丁啦
2020/12/05 07:59
  • java
  • intellij-idea
  • 点赞
  • 收藏
  • 回答
    私信

5个回复