众所周知static字段是在类加载的时候完成初始化过程的。
而final字段呢。
在类加载时给予空间而不是对其进行初始化。
例如
加载时给一个String类型空间大小,栈中的strFinal引用指向这个空间。
初始化时也就是调用类的构造器时。将“ok”初始化。
下面的代码展示了:
首先static中创建对象demoB。就会调用构造器DemoB(),DemoB()会初始化其中的final
String strFinal字段。进而实现初始化。
还有另外的一段代码也可以说明
若有错误。望大家不吝赐教。
而final字段呢。
在类加载时给予空间而不是对其进行初始化。
例如
private final String strFinal="ok";
加载时给一个String类型空间大小,栈中的strFinal引用指向这个空间。
初始化时也就是调用类的构造器时。将“ok”初始化。
下面的代码展示了:
public class DemoB {
private static DemoB demoB = new DemoB();
public final String strFinal="final字段初始化";
public DemoB() {
}
public static void main(String[] args) {
System.out.println(demoB.strCommon);
}
}
首先static中创建对象demoB。就会调用构造器DemoB(),DemoB()会初始化其中的final
String strFinal字段。进而实现初始化。
还有另外的一段代码也可以说明
public class DemoB {
private static DemoB demoB = new DemoB();
public String strCommon;
public final String strFinal;
public DemoB() {
strFinal = "final字段初始化";
}
public static void main(String[] args) {
System.out.println(demoB.strCommon);
}
}
若有错误。望大家不吝赐教。