JAVA静态代码块,代码块,构造方法哪个先执行?

161 阅读2分钟

我们先看下以下代码,你觉得最终输出的结果是什么呢?

public class A {

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

    public A() {
        System.out.println("A构造方法");
    }

}

public class B extends A{

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

    public B() {
        System.out.println("B构造方法");
    }

    public static void main(String[] args) {
        B b = new B();
    }

}

1.子类B类依赖于父类A,所以JVM会首先执行父类的方法,静态方法优于普通方法执行,代码块优于构造方法执行。

2.代码块的作用一般用于类或者对象的初始化,例如可以将多个构造方法中的相同的代码放到代码块中,对对象进行初始化。

最终程序输出的结果为

A静态代码块
B静态代码块
A代码块
A构造方法
B代码块
B构造方法

总结规律有3条:

1. 父类优于子类执行; 2. 静态方法优于普通方法; 3. 代码块优于构造方法。

===============================================================

推荐一个公众号:外卖小冰糖

领券下单更便宜,一起薅平台羊毛,所得俑金对半分,超过0.3元即可返回无套路。

他主要有以下几点优势:

1.安静:不会每天推送消息打扰人。

2.返俑:你每下一个单都会获得一定的俑金,每单能拿到0.5-1元这样的金额,每天晚上8点左右自动通过微信零钱转给你,首次下单额外补贴0.5元俑金。

3.公众号内部提供一些小游戏,无聊的时候可以玩一玩,如:人生重开变态版,2048,飞机滑行等小游戏。

4.提供一些工具类的功能,如查看每日天气,每日英语,二维码生成,短链生成等。

希望能帮助到大家,祝大家生活愉快!!