使用“ final”关键字可使您声明的变量不变。最初分配后,将无法重新分配。
但是,这不一定意味着变量引用的实例状态是不可变的,仅引用本身是不可变的。
在变量上使用“
final”关键字有几个原因。一种是优化,通过将变量声明为final来允许值被记忆。
使用最终变量的另一种情况是方法中的内部类需要访问声明方法中的变量。以下代码说明了这一点:
public void foo() { final int x = 1; new Runnable() { @Override public void run() { int i = x; } };}如果未将x声明为“最终”,则代码将导致编译错误。需要成为“最终”的确切原因是因为新的类实例可以超过方法调用的寿命,因此需要自己的x实例。为了避免在同一范围内具有可变变量的多个副本,必须将变量声明为final,以便不能对其进行更改。
一些程序员还提倡使用“ final”来防止意外将变量重新分配到不应分配的位置。一种“最佳实践”类型规则。


![Java中的最终对象[重复] Java中的最终对象[重复]](http://www.mshxw.com/aiimages/31/463743.png)
