更改 Java 中的最终字符串值

Change final String value in Java

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

我的问题是:以字符串为例? 如果您创建一个 String 对象,例如 "String s = new String("str"); 有没有办法改变字符串的 "str" 值? 如果不是,那是为什么?难道不能在不更改引用的情况下更改该 String 对象的字面值吗?

谢谢!

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

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

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

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

正如其他答案所说,字符串是不可变的。 StringBuilder or StringBuffer 如果您希望能够更改有关字符串的内容,则更多您正在寻找的东西。