Java的初始化块分为静态初始化块和非静态初始化块
静态初始化块
static{ //初始化内容 }
非静态初始化块
{ //初始化内容 }
静态初始化块仅能初始化类变量,即static修饰的数据成员。非静态初始化块在对象每次生成时都会被执行一次,可以初始化类的实例变量。两种初始化块不可以传参数。
非静态初始化块在构造函数执行时且构造函数主体代码没执行前执行
静态初始化块、非静态初始化块、构造函数 执行的顺序为:静态初始化块->非静态初始化块->构造函数
非静态初始化块在匿名内部类中使用较多,因匿名内部类无法使用构造函数,所以初始化工作可以交给非静态初始化块。
白衣横马出门去,归来依旧那少年