更改Java中的最终字符串值

更改Java中的最终字符串值,java,string,reference,Java,String,Reference,如果您构建了一个对象,比如说“入侵者”,并将其定义为final,那么您仍然能够更改该对象字段,这些字段在类的定义中不是final(即injecter.power=50;)。 在这种情况下,限制是关于入侵者的对象引用,而不是内部值 我的问题是:以字符串为例怎么样? 如果您创建一个字符串对象,比如“strings=newstring(“str”); 有没有办法更改字符串的“str”值? 如果没有,为什么呢?在不更改字符串对象的引用的情况下,是否可以更改该字符串对象的文本值 谢谢!没有,因为字符串是不

如果您构建了一个对象,比如说“入侵者”,并将其定义为final,那么您仍然能够更改该对象字段,这些字段在类的定义中不是final(即injecter.power=50;)。 在这种情况下,限制是关于入侵者的对象引用,而不是内部值

我的问题是:以字符串为例怎么样? 如果您创建一个字符串对象,比如“strings=newstring(“str”); 有没有办法更改字符串的“str”值? 如果没有,为什么呢?在不更改字符串对象的引用的情况下,是否可以更改该字符串对象的文本值


谢谢!

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

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

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

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

不会发生任何事情。将返回一个永远不会分配给任何对象的新字符串。

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

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

不会发生任何事情。将返回一个永远不会分配给任何对象的新字符串。

字符串是不可变的,正如其他答案所述。或者,如果您希望能够更改字符串的内容,则字符串是不可变的。

字符串是不可变的,正如其他答案所述。或者,您正在寻找的更多如果您想更改字符串的内容。

否。原因其实非常简单:字符串没有任何公共字段,也没有任何方法可以让您更改字符串。(一种奇特的说法是,它是不可变的)这是因为没有允许您更改其私有属性的公共方法。没有。原因实际上非常简单:字符串没有任何公共字段,也没有任何允许您更改字符串的方法。(一种奇特的说法是,它是不可变的)这是因为没有允许您更改其私有属性的公共方法。您的答案令人困惑。如果字符串是不可变的,您就不能更改它。他的答案是正确的,因为您从未实际更改字符串。当您为字符串对象指定新值时,您将用新值替换它,而不是修改以前的字符串。Yo你的答案令人困惑。如果字符串是不可变的,你就不能更改它。他的答案是正确的,因为你从来没有真正更改过字符串。当你为字符串对象指定一个新值时,你是在用新值替换它,而不是修改以前的字符串。