对final字段初始化浅谈

众所周知static字段是在类加载的时候完成初始化过程的。
而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);
}
}

若有错误。望大家不吝赐教。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值