初始化块
Java中的初始化域的方法:
- 在构造器中设置值
- 在声明中赋值
- 使用初始化块
在构造对象的时候会先运行初始化块,再运行构造器。静态初始化块在类加载的时候执行,用于初始化静态域。
import java.util.Random;
public class Employee extends People {
private int id;
private String name;
private double salary;
private static int nextId;
public Employee() {
{
name = "";
salary = 0;
}
System.out.println("这是构造器!");
}
{
id = nextId;
nextId++;
System.out.println("这是普通初始化块!");
}
static {
Random generator = new Random();
nextId = generator.nextInt();
System.out.println("这是静态初始化块!");
}
public Employee(double salary) {
this();//调用上面的构造器
this.salary = salary;
System.out.println("这是构造器!");
}
public static void main(String[] args) {
Employee employee1 = new Employee();
System.out.println("id:"+employee1.id);
System.out.println("----------------");
Employee employee2 = new Employee();
System.out.println("id:"+employee2.id);
}
}
执行结果:
这是静态初始化块!
这是普通初始化块!
这是构造器!
id:1088716808
----------------
这是普通初始化块!
这是构造器!
id:1088716809
先执行静态初始化块,再执行普通初始化块,最后调用构造方法。
参考文献
《Java核心技术(原书第10版) 卷Ⅰ》