静态代码块、构造代码块和构造函数的执行顺序

本文前面稍微介绍了一下构造代码块和静态代码块的注意点,如果急需了解执行这三者执行顺序的话可以直接看向最后。

一 .构造代码块

{
    //这个就是构造代码块
}

关于构造代码块,以下几点需要注意:

  1.构造代码块是用来给对象进行初始化的。

  2.对象一创建就运行构造代码块,并且优先于构造函数。

  3.构造代码块和构造函数的区别:

    构造代码块是给对象进行统一初始化的,而构造函数是给对应的对象初始化,因此构造函数可以有多个,运行哪个构造函数就创建出什么样的对象,但无论创建什么样的对象,都会执行相同的构造代码块。即构造代码块中定义的是不同对象共性的初始化内容。

二.静态代码块

static{
    //这就是静态代码块
}

关于静态代码块,以下几点需要注意:

  1.静态代码块是随着类的加载而执行的,并且只执行一次,且优先于主函数。

  2.静态代码块是给类初始化的,且一个类中可以有多个静态代码块

三.执行顺序

  1.对于只有一个类的情况:

    静态代码块>构造代码块>构造函数

  2.对于存在继承的情况:

    1).执行父类的静态代码块

    2).执行子类的静态代码块

    3).执行父类的构造代码块,然后执行构造函数

    4).执行子类的构造代码块,然后执行构造函数

    (在创建子类对象的时候,会调用super方法,所以是先初始化父类,那就得先执行构造代码块,然后执行构造方法)

原文地址:https://www.cnblogs.com/wsxdev/p/11520191.html