如果java中的字符串是不可变的,为什么我可以这样做?

我意识到变量名的 hashCode 在“更新”后是不同的,但客观上是什么使得 String 对象实际上是不可变的?


public static void main(String[] args) {


        String str = "AB";

         System.out.println(str ); // AB


         str = str .replace(str .charAt(0) ,'W');

         System.out.println(str );//WB


 }

编辑1:hashCode基于变量的值,与内存地址无关。

编辑2:我现在明白字符串是引用,而不是它本身的对象。

MYYA
浏览 96回答 1
1回答

翻阅古今

如果您查看 的文档replace(),它会提到:返回一个新字符串,该字符串是用 newChar 替换该字符串中所有出现的 oldChar 所得的结果。因此,替换后的String是一个全新的String。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java