string类型为什么是不可变的?考虑以下示例。
String str = new String(); str = "Hello"; System.out.println(str); //Prints Hello str = "Help!"; System.out.println(str); //Prints Help!
现在,在 Java 中,String 对象是不可变的。那么为什么可以为对象str分配值“Help!”。这不是与 Java 中字符串的不变性相矛盾吗?谁能解释一下不变性的确切概念?
编辑:
好的。我现在明白了,但只是一个后续问题。下面的代码呢:
String str = "Mississippi"; System.out.println(str); // prints Mississippi str = str.replace("i", "!"); System.out.println(str); // prints M!ss!ss!pp!
这是否意味着再次创建了两个对象(“Mississippi”和“M!ss!ss!pp!”),并且引用在方法str之后指向不同的对象replace()?