Java对象初始化顺序

单一类:(静态成员变量&静态初始化块)<(成员变量&初始化块)<构造函数

public class 对象初始化顺序 {
    public static void main(String[] args){
        Person p = new Person();
    }
}
class Person{
    public static String staticfield ="静态成员变量";
    public String field ="成员变量";
    static
    {
        System.out.println(staticfield);
        System.out.println("静态初始化块");
    }
    {
        System.out.println(field);
        System.out.println("初始化块");
    }
    Person(){ 
        System.out.println("构造函数");
    }
    
}

输出结果

静态成员变量
静态初始化块
成员变量
初始化块
构造函数

继承类:(父类静态成员变量&父类静态初始化块)<(子类静态成员变量&子类静态初始化块)<(父类变量&父类初始化块)<(父类构造器&子类变量)<(子类初始化块&子类构造器)

括号内根据出现的先后顺序决定。

原文地址:https://www.cnblogs.com/malinkang/p/2558066.html