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

时间:2012-04-19 17:16:52

标签: java string final

  

可能重复:
  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属性在某种程度上是多余的?

4 个答案:

答案 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并更改其状态。最终确保您使用的引用不能再指向另一个对象。