在 Java 中定义最终字符串是否有意义



可能的重复项:
弦乐和决赛

从 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属性在某种程度上是多余的?

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

引用是最终的,对象不是。您可以将可变对象定义为最终对象并更改其状态。最终确保的是,您正在使用的引用永远不会再次指向另一个对象。

最新更新