

public class FinalMemberVariable {
//为final的成员变量的三种赋值方法
final int x;
final int z ;
final int k = 10;//方法一
//方法二:在非静态语句块中进行初始化
{
x = 10;
}
int y;
int m = 89;
//方法三:在构造函数中进行初始化
FinalMemberVariable() {
z = 10;
}
public static void main(String[] args) {
//final的引用问题,可以改变引用对象的值,不可以改变指向新的对象
final FinalMemberVariable fmv = new FinalMemberVariable();
System.out.println("m = " +fmv.m);
//改变了引用对象的值
fmv.m = 8;
System.out.println("m = " + fmv.m);
fmv.getVariableValue();
//下面这句会出错
//fmv = new FinalMemberVariable();
final int f;//final的局部变量可以不用初始化,但要使用时,必须赋值,赋值只需在使用前
System.out.println("下面使用f,但先赋值");
f = 12;
System.out.println("f = " + f);
}
public void getVariableValue() {
//成员变量没有被final声明成最终变量时:系统会给成员变量 赋初值
//如果使用了关键词:final,则系统不会赋初值
System.out.println(y);
System.out.println(x);
System.out.println(z);
}
}
下面是静态最终成员常量的使用


public class FinalStaticMember {
//必须要赋值, 方法有两种,一是声明时就赋值,二是声明后,在静态代码块中赋值
//方法一:
public final static int X = 1;
public final static int Y;
//方法二:
static {
Y = 2;
}
public static void main(String[] args) {
System.out.println("X = " + X);
System.out.println("Y = " + Y);
}
}