Java加载顺序

public class Ho{
    public static String str="静态成员变量";
    public static String getStr(){
        System.out.println("静态方法");
        return  "返回的静态方法";
    }

    {
        System.out.println("非静态初始化块");
    }
    static
    {
        System.out.println("静态初始化块");
        //str=getStr();
    }
    public Ho()
    {
        System.out.println("构造方法");
    }
    public static void main(String args[]){
        //Ho a=new Ho();
        //System.out.println(Ho.str);
    }
}

这里写图片描述

创建对象实例后
这里写图片描述

java在首次装入类时,会对静态成员变量和静态方法进行一次初始化,但方法不被调用则不会执行;
由此可知,java在加载类时顺序
初始化静态块–>(实例化对象)–>
初始化非静态块–>构造函数

若为子父类继承关系且当主函数在子类当中
初始化父类静态块–>初始化子类静态块–>(实例化对象)–>
初始化父类非静态块–>父类构造方法–>
初始化子类非静态块–>子类构造函数

猜你喜欢

转载自blog.csdn.net/qq_20996105/article/details/78015328