如果我可以创建一个字符串,并给它一个值,这怎么可能。然后,我可以像这样简单地覆盖它的值:
String a="abc";
a="def";
我怎么可能改变a
的值?我一定在这里遗漏了一些东西。我知道每当创建 String 对象时都会使用字符串文字,而不是每次都创建 String 的新实例
请帮忙,谢谢。
最佳答案
您没有更改其值,而是创建了一个新的字符串
。从技术上讲,您的变量更改其值(其指向的内存位置)
以引用新的String
对象,但它指向新的String
对象而不是相同的 String
对象。
您实际上并没有更改原始 String
对象的值,您只是引用了一个新的 String
,因此虽然变量的值确实发生了变化,但您并没有改变实际上改变了原始的 String
对象...希望这是有道理的。
关于java - Java中的String为什么是不可变的对象,但我在创建一个对象后仍然可以更改它的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31752304/