今天在看java中String的源码,发现了自己对final变量初始化的了解不够好,有遗漏的地方,之前只知道第一种初始化方法。
public class FinalStudy {
//第一种 在定义后直接初始化
private final int a = 1;
//第二种 声明变量后在构造方法中为其赋值
//如果采用用这种方式,那么每个构造方法中都要有j赋值的语句
private final int b;
public FinalStudy(int b) {
this.b = b;
}
// 初始化方式三,声明变量后在构造代码块中为其赋值
// 如果采用此方式,就不能在构造方法中再次为其赋值
// 构造代码块中的代码会在构造函数之前执行,如果在构造函数中再次赋值,
// 就会造成final变量的重复赋值
private final int c;
{
c = 3;
}
}