如果一个类的域被声明为final:
则必须对它进行初始化,否则编译器会报错;
初化时可以在声明时进行,private final int n=100;
如果在声明时未进行初始化,则在每个构造函数中都要对它进行显式初始化;
如果对一个类对象变量声明为final,只代表这个对象变量不能再引用其它对象,如,final Date date=new Date();是不能再date=new Date(),但可以更改date对象的状态,例如date.setTime(3600)等。
如果一个局部变量声明为final:
经过测试,可以先不初始化,但只要这个变量被赋值后,就不能再更改。例如在局部内部类中使用到的外部类方法中的局部变量就要声明为final。
如果一个域被声明为static final,则必须在声明时就初始化public static final PI=3.14,相当一个常量使用;方法中的局部变量不能声明为static。