静态初始化器是由关键字static引导的一对大括号括起的语句组。作用是:在加载时,初始化类的静态域。如有多个static{}程序段,则在类的初始化时,会依次执行。
与构造函数相同,他们都是用来完成初始化的工作,但是静态初始化器与构造函数有三点不同:
①构造函数是对每个新创建的对象初始化,而静态初始化器是对类自身进行初始化。
②构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载到内存时由系统调用执行。
③不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。
优点:
当类有一些静态变量,同时不能用一行代码解决初始化时,可以使用这个方法。而不是建一个initial方法,每次new的时候都调用一次。
代码样例:
class Person {
private static final Date BOOM_START;
static {
Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_START = gmtCal.getTime();
}
}