Java中静态初始化块、初始化块、构造方法的执行顺序
java里初始化一个类的对象,通过初始化块或者构造方法进行数据赋值。与其相关的执行代码有这么几种:
- 静态初始化块
- 初始化块
- 构造方法
静态初始化块
静态初始化块是由static修饰的初始化块,只在类加载时执行一次,而且当一个静态初始化块没有执行完成时不会执行下一个静态初始化块。
初始化块
初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值。
构造方法
在每次初始化实例对象时调用。
重点:执行顺序
- 在加载类时执行一次静态初始化块(之后不再调用)。
- 在每次初始化实例对象时:先执行非静态初始化块。
- 再执行构造方法。
这是一个基本的原则,但是往往在实际操作过程中就会存在一个较为复杂的情况,比如如下:
import java.time.LocalDate;
import java.util.Date;
class Employee {
private String name;
private double salary;
private Date hireDay;
private static int id=0;
private static int