请考虑以下示例.
String str = new String();
str = "Hello";
System.out.println(str); //Prints Hello
str = "Help!";
System.out.println(str); //Prints Help!
Run Code Online (Sandbox Code Playgroud)
现在,在Java中,String对象是不可变的.那么为什么对象str可以赋值"帮助!".这与Java中字符串的不变性相矛盾吗?任何人都可以向我解释一下不变性的确切概念吗?
编辑:
好.我现在得到它,但只是一个后续问题.以下代码如何:
String str = "Mississippi";
System.out.println(str); // prints Mississippi
str = str.replace("i", "!");
System.out.println(str); // prints M!ss!ss!pp!
Run Code Online (Sandbox Code Playgroud)
这是否意味着再次创建了两个对象("Mississippi"和"M!ss!ss!pp!"),并且引用str指向replace()方法之后的另一个对象?
我被告知java中的字符串无法更改.以下代码如何?
name="name";
name=name.replace('a', 'i');
Run Code Online (Sandbox Code Playgroud)
它不会改变name字符串吗?另外,replace()的实现在哪里; 相比于(); 等于(); 提供?我只是在这里使用这些功能,但它们实际上在哪里实现?