针对java初始化注意事项:
一、一般常用的java类初始化(构造方法初始化、调用静态方法初始化),也可以理解为初始化就是第一次加载静态数据的时候执行的初始化。
二、关于对静态数据的调用:
public class Test1{
public static final int num = 3;
public static final Integer nums = new Integer(1);
static {
System.out.println("加载类常量实现初始化?");
}
}
public class TestMain {
public static void main(String[] args) {
int num1 = Test1.num;
int num2= Test1.nums;
System.out.println("num1:" +num1);
System.out.println("num2:" + num2);
}
}
console 输出结果:
第一个调用:num1 : 3
第二个调用:
加载类常量实现初始化?
num2 : 1
结论:一般情况下调用静态数据都会执行类得初始化加载,在这里将static num 标记为final 则改值就变成了编译期常量(只针对基本数据类型 包括String),然而后者虽然也加了同样的修饰符,但是后者实
现的是后期绑定,形成了静态域, 而非编译期常量, 关于java的编译期常量调用是不会进行类初始化加载的。