package finalquestion;
/*
1、Final变量可以在声明时初始化,也可以在构造方法/代码块中初始化。不能在成员方法中初始化。否则会编译错误。
2、Final静态变量只能在声明时或者静态代码块中初始化
*/
public class FinalQuestion01 {
//可以在声明时初始化 private final int id;
private final int id;
//也可以在代码块中初始化
{
this.id = 1;
}
//也可以在构造方法中初始化
public FinalQuestion01(int id) {
this.id = id;
}
//无法在成员变量中初始化,这里会编译错误
public void method() {
this.id = 1;
}
public void updateId(int newId) {
//编译错误:Cannot assign a value to final variable 'id'
id = newId;
}
//-----------------静态变量------------------//
//初始化方式一,在定义类变量时直接赋值
public final static int id_1 = 3;
//初始化方式二,在方法块中赋值
public final static int id_2 ;
static {
id_2=10;
}
//这样直接编译错误,必须在静态代码块中,因为静态的方法和成员变量在对象创建时就实现了
{
id_2=10;
}
}
cs