静态代码块、构造代码块、构造方法执行顺序

时间:2022-05-15 19:37:12
执行顺序:父类静态代码块 > 子类静态代码块 > 父类构造块 > 父类构造方法 > 子类构造块 > 子类构造方法


原理:当实例化子类对象时,首先要加载父类的class文件进内存,静态代码块是随着类的创建而执行,所以父类静态代码块最先被执行,子类class文件再被加载,子类静态代码块被执行。
实例化子类对象要先调用父类的构造方法,而调用父类构造方法前会先执行父类的非静态代码块(构造块)


名词解释:
静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。


构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用(注意),并且构造代码块的执行次序优先于类构造函数。


class Code{
    {
      System.out.println("Code的构造块");
    }
    
    static{
        System.out.println("Code的静态代码块");
        }
        
    public Code(){
        System.out.println("Code的构造方法");
        }
    }
}