openshell 的个人博客 openshell 的个人博客

一天很长,但十年很短。

目录
java类初始化代码执行顺序
/  

java类初始化代码执行顺序

  • 执行顺序:静态代码块→非静态代码块→构造方法
  • 其中静态代码块只在类第一次加载时执行一次,之后不再执行;非静态代码块和构造函数每创建(new)一个对象时,都会执行一次。

代码示例

public class Son extends Parent {
    public Son() {
        System.out.println("子类构造方法");
    }

    {
        System.out.println("子类非静态方法");
    }

    static {
        System.out.println("子类静态方法");
    }
}

class Parent {
    public Parent() {
        System.out.println("父类构造方法");
    }
    {
        System.out.println("父类非静态代码块");
    }

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

class Main{
    public static void main(String[] args) {
        System.out.println("########第一次初始化#########");
        new Son();
        System.out.println("########第二次初始化#########");
        new Son();

    }
}

运行结果:

########第一次初始化#########
父类静态代码块
子类静态方法
父类非静态代码块
父类构造方法
子类非静态方法
子类构造方法
########第二次初始化#########
父类非静态代码块
父类构造方法
子类非静态方法
子类构造方法

标题:java类初始化代码执行顺序
作者:openshell
地址:http://blog.caiqz.cn/articles/2020/05/17/1589695084603.html