在Java中更改最终的String值

时间:2015-02-23 02:22:30

标签: java string reference

如果您构建一个对象,请说" Intruder"并将其定义为final,您仍然可以更改此类对象字段,这些字段在类的定义中不是最终的(即Intruder.power = 50;)。 在这种情况下,限制将是关于入侵者的对象引用而不是内在值。

我的问题是:以Strings为例? 如果你创建一个String对象,比如" String s = new String(" str"); 有没有办法改变字符串" str"值? 如果没有,为什么?是不是可以更改String对象的文字值而不改变它的引用?

谢谢!

3 个答案:

答案 0 :(得分:3)

没有,因为字符串是不可变的。在字符串上使用方法时,它会创建一个新的字符串对象。

答案 1 :(得分:1)

正如其他答案所述,字符串是不可变的。如果您希望能够改变字符串的内容,那么StringBuilderStringBuffer就是您正在寻找的内容。

答案 2 :(得分:0)

这是不可能的。字符串是不可变的,这意味着它们不能被更改。如果我这样做:

String name = "John"
name.substring(2);

什么都不会发生。将返回一个永远不会分配给任何内容的新String。