final的字面意思是指无法改变,但是不同的情况下使用,会有些许区别
final成员变量
当final修饰一个类的成员变量时,表示该成员变量是常量,这句话需要解释一下:
如果该成员变量的类型是预定义类型,说明该变量值不可修改;如果该成员变量的类型是自定义类型,则该变量只是引用,那么该引用不能再指向别的对象,而对象的值却是可以修改的。
注意:
1)当我们使用static final+预定义类型变量来表示一个静态常量的时候,变量名应该全部用大写字母,并且单词之间用下划线分隔。
2)使用final修饰的成员变量一定要立刻初始化其值。
final参数
final修饰形式参数,意味着函数内部不可以让参数引用其它的对象,但是如果对象提供了修改内部数据的方法比如setValue,仍然可以调用,下面的例子是合法的:
publicclass HelloDate
{
publicstaticvoid main(String[] args)
{
MyNumber n=new MyNumber(2);
f(n);
}
publicstaticvoid f(final MyNumber n)
{
n.setValue(5);
System.out.print(n.getValue());
}
}

