final修饰符
1.final 可以修饰变量,被final修饰的变量被赋初始值之后,不能对它重新赋值。
2.final可以修饰方法,被final修饰的方法不能被重写。
3.final可以修饰类,被final修饰的类不能派生子类。
final只能在如下3个位置指定初始值。
1.定义final实例变量时指定初始值。
2.在非静态初始化块中为final实例变量指定初始值。
3.在构造器中为final实例变量指定初始值。
对于final类变量而言,同样必须显示指定初始值,而且final类变量只能在2个地方指定初始值:
定义final类变量时指定初始值;
在静态初始化块中为final类变量指定初始值
对于一个final变量,不管它是类变量,实例变量,还是局部变量,只要定义该变量时使用了final修饰符修饰,并在定义该final类变量时指定了初始值,而且该初始值可以在编译时就被确定下来,那么这个final变量本质上已经不再是变量,而是相当于一个直接量。
final修饰符的一个重要用途就是定义“宏变量”,当定义final变量时就为该变量指定了初始值,而且该初始值可以在编译时就确定下来,那这个final变量本质上就是一个“宏变量”,编译器会把程序中所有用到该变量的地址直接替换成该变量的值。
对于final实例变量而方,只有在定义该 变量时指定初始值才会有“宏变量”的效果,在非静态初始化块、构造器中为final实例变量指定初始值则不会有这种效果