可能重复:
字符串和最终
从http://docs.oracle.com/javase/6/docs/api/java/lang/String.html我可以读到:
Strings are constant; their values cannot be changed after they are created.
这是否意味着 afinal String
在 Java 中实际上没有意义,因为该final
属性在某种程度上是多余的?
可能重复:
字符串和最终
从http://docs.oracle.com/javase/6/docs/api/java/lang/String.html我可以读到:
Strings are constant; their values cannot be changed after they are created.
这是否意味着 afinal String
在 Java 中实际上没有意义,因为该final
属性在某种程度上是多余的?
该String
对象是不可变的,但它实际上是对String
可以更改的对象的引用。
例如:
String someString = "Lala";
您可以重新分配此变量持有的值(以使其引用不同的字符串):
someString = "asdf";
但是,有了这个:
final String someString = "Lala";
那么上述重新分配将是不可能的,并且会导致编译时错误。
final
指的是变量,而不是对象,所以是的,这是有道理的。
例如
final String s = "s";
s = "a"; // illegal
这说得通。final
关键字防止将来对变量赋值。以下将是java中的错误:
final String x = "foo";
x = "bar" // error on this assignment
引用是最终的,对象不是。您可以将可变对象定义为最终对象并更改其状态。final 确保您正在使用的引用不能再次指向另一个对象。