ami*_*o21 1 java string object immutability
如果我可以创建一个字符串,给它一个值,这怎么可能。然后,我可以简单地像这样覆盖它的值:
String a="abc";
a="def";
Run Code Online (Sandbox Code Playgroud)
我怎么可能改变 的值a?我一定在这里遗漏了一些东西。我知道每次创建 String 对象时都会使用 Strings 文字,而不是每次都创建一个新的 String 实例
请帮忙,谢谢。
你没有改变它的价值,你正在创造一个新的String. 从技术上讲,您的变量会更改其值(memory location its pointing to)以引用新String对象,但它指向的新String对象不是同一个String对象。
您实际上并没有更改原始String对象的值,您只是在引用一个新对象,String因此虽然变量的值确实发生了变化,但您实际上并没有更改原始String对象......希望这是有道理的。
String a="abc";//creating string literal object
a="def";
Run Code Online (Sandbox Code Playgroud)
您实际上正在更改a对由字符串文字“def”创建的新对象的引用。
String不可变意味着您不能更改对象本身,但可以更改对该对象的引用。改变一个对象意味着使用它的方法来改变它的字段之一。
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |