5-9初始化块

5.9初始化块

初始化块与构造器作用类似,也可以对对象进行初始化操作。

5.9.1 使用初始化块

初始化块是类中的第四种成员(方法、变量、构造器)。一个类可以有多个初始化块,执行顺序是定义顺序。

[修饰符] {
//初始化代码
}

案例

public class Person
{
{
int a = 6;
if(a>4)
{
System.out.println("Person的第一个初始化块");
}
}
{
System.out.println("Person的第二个初始化块");
}
public Person()
{
System.out.println("Person的无参构造器");
}
public static void main(String[] args)
{
new Person();
}
}
/*运行结果:
Person的第一个初始化块
Person的第二个初始化块
Person的无参构造器
*/

**注意:**初始化块在构造函数之前被隐式调用。没有名字,因此无法被外部调用。

5.9.2 变量的默认值与初始化块

变量默认值相当于一个初始化块。如果将下面的a定义放到前面,则结果为6。

public class InstanceInitTest
{
//int a = 9;
{
a = 6;
}
int a = 9;
public static void main(String[] args)
{
System.out.println(new InstanceInitTest().a);
}
}
/*
9
*/

5.9.3 初始化块与构造器

初始化块是无参的构造,因此,一般将无参的初始化行为放到初始化块中。(初始化块本身就是构造)

5.9.4 静态初始化块

即类初始化块(用static修饰),对整个类进行初始化处理。因此在第一次创建类对象之前被调用。同时,会递归往上寻找父类的静态初始化块执行。