【发布时间】:2010-12-05 20:32:23
【问题描述】:
考虑以下示例。
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() 方法之后指向不同的对象?
【问题讨论】:
-
str 只是一个引用而不是对象本身
标签: java string immutability