可能重复:
String and 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.
这是否意味着final String
在Java中没有意义,因为final
属性在某种程度上是多余的?
答案 0 :(得分:55)
String
对象是不可变的,但它实际上是对String
对象的引用,可以对其进行更改。
例如:
String someString = "Lala";
您可以重新分配此变量所持有的值(以使其引用不同的字符串):
someString = "asdf";
然而,有了这个:
final String someString = "Lala";
然后上面的重新分配是不可能的,并且会导致编译时错误。
答案 1 :(得分:17)
final
指的是变量,而不是对象,所以是的,它是有道理的。
e.g。
final String s = "s";
s = "a"; // illegal
答案 2 :(得分:5)
这很有道理。 final
关键字可防止将来对变量进行分配。以下是java中的错误:
final String x = "foo";
x = "bar" // error on this assignment
答案 3 :(得分:3)
引用是最终的,对象不是。您可以将可变对象定义为final并更改其状态。最终确保您使用的引用不能再指向另一个对象。