初始化块运行顺序

一、前言

初始化块的加载顺序一直没有搞清楚,今天做一个小测试。

二、代码

class a{
    {
        System.out.println("1");
    }
    static {
        System.out.println("2");
    }
    public void a(){
        System.out.println("This is a");
    }
}

public class b extends a{
    {
        System.out.println("3");
    }
    static{
        System.out.println("4");
    }
    public void b(){
        System.out.println("This is b");
    }
    public static void main(String[] args) {
        System.out.println("----main start----");
        new a();
        new b();
        System.out.println("----main end----");
    }
}

输出结果:

2
4
----main start----
1
1
3

----main end----

三、结论

加载顺序为:静态方法->父类初始化块->子类调用父类初始化块->子类初始化块

静态代码块会在加载类的时候就加载初始化,初始化块会在创建对象时才加载。

猜你喜欢

转载自blog.csdn.net/huobaopaopao/article/details/83317448
今日推荐