更改 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 如果您希望能够更改有关字符串的内容,则更多您正在寻找的东西。
如果你构建一个对象,比如 "Intruder" 并将其定义为最终的,你仍然可以更改此对象字段,这些字段在 class 的定义中不是最终的(即Intruder.power = 50;)。 在那种情况下,限制将是关于入侵者的对象引用而不是内部值。
我的问题是:以字符串为例? 如果您创建一个 String 对象,例如 "String s = new String("str"); 有没有办法改变字符串的 "str" 值? 如果不是,那是为什么?难道不能在不更改引用的情况下更改该 String 对象的字面值吗?
谢谢!
不,没有,因为字符串是不可变的。当您对字符串使用方法时,它会创建一个新的字符串对象。
这是不可能的。字符串是不可变的,这意味着它们不能被改变。如果我这样做:
String name = "John"
name.substring(2);
什么都不会发生。将返回一个永远不会分配给任何内容的新字符串。
正如其他答案所说,字符串是不可变的。 StringBuilder or StringBuffer 如果您希望能够更改有关字符串的内容,则更多您正在寻找的东西。