我的代码是:
String str = "Hello";
String str1;
str1 = str;
str1 = str1 + " World";
System.out.println(str1);
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
Hello World
Hello
Run Code Online (Sandbox Code Playgroud)
我期望的输出是Hello World针对这两种情况的,因为根据我的理解,在str1 = str两个对象都引用相同的位置后,如果我改变一个对象的内容,其他也应该受到影响.
那么,是str1 = str1 + " World";在不同的内存位置创建一个新的字符串对象.
字符串是不可变的.当你这样做时str1 = str1 + " World";,你正在创建一个全新的String并更新str1它的引用.你永远不会重新放弃,str所以这是预期的行为.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |