Java篇之类的执行顺序

  • 只使用类时,不会进行初始化

  • 在使用静态变量或创建对象时,才会进行初始化。初始化的顺序是

    • 调用静态代码块(如果有的话)
    • 调用普通代码块(如果有的话)
    • 调用构造函数

类加载示意图

Java篇之类的执行顺序_第1张图片

例子:

// 调用顺序是 A -> E的顺序
public class Main {
    public static final String a = "E";
    
    public static void main(String[] args) {
        System.out.println("D");
        new Main();
    }

    public Main() {    // 构造函数,创建对象时调用
        System.out.println("C");
    }

    {    // 代码块,在创建对象时调用,优于构造函数。先调用代码块,后调用构造函数
        System.out.println("B");
    }

    static {     // 代码块,在创建对象时调用,优于构造函数。先调用代码块,后调用构造函数
        System.out.println("A");
    }
}

你可能感兴趣的:(java,java)