thinking in java 4 final
final可以让你控制你的成员、方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或缺的地位。
1.final成员
当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。不能同时既在定义时给了值,又在构造函数中给另外的值。
public class Tux {final int i = 3; //final可以在定义处直接赋值final int j; //j = 5; //final智能在定义处或者构造器中赋值,这里会报错private Tux(int j) { //i = 4; //在定义处已经初始化,不能再赋值,会报错 this.j = j;//如果final成员变量j没有赋值,会报错。}}public static void main(String[] args) { Tux x =new Tux(1); x.i = 4; //错误,已经初始化过了 //可以通过重新定义对象来指定i的值 x = new Tux(5);//此时 j = 5,(但是x在第一次赋值和第二次赋值指向的是常量池中不同的对象,new Tux(1)会在程序退出或者内存满的情况下才被回收?)}