一:final用法:
1.修饰变量
这个变量被初始化后便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可变,即不能再指向其他的对象。
public class Test01{ final int x1= 10000; final int x2; final int x3; { x2 = 20000; } Public exe3(){ this.x3 = 3000; } }
如果final修饰的变量是对象类型,那么不可更改指的是该变量不可以再指向别的对象,但是对象的值时可以更改的,比如:
final Operate operate = new Operate() ;// operate有一个普通变量i初始化为10 operate.i = 11; operate.i = 12; System.out.println(operate.i); //输出12 上述是自定义类,即便是数组,List等集合类型,所保存的值也是可以更改的。
2.修饰方法(确定下功能,没有被子类重写的必要)
不能被子类重写。如:Object的getClass();
功能已经确定下来,就算子类重写了该方法后,也是实现一样的功能,所以没有必要被子类重写。
3.修饰类(俗称太监类不能有孩子)
不能被继承,如:String类、StringBuffer类、System类
二.final与static区别:
static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变
三.其他与final相关
1.final与finally、finalize()
Object.finalize()//垃圾回收的,显示把内存中对象清理掉
2.接口中的变量都是public static final 的