Java的字符串不变性,带有"+ ="运算符

Dac*_*cav 3 java string immutability

很多问题,关于Java字符串不变性,对于这实际上这个问题的作者重新分配的参考.

然而,有一个显着的案例,似乎没有重新分配字符串:

String s = "hello";
s += " world";
Run Code Online (Sandbox Code Playgroud)

您将其视为字符串的实际修改.在家尝试一下.

我很确定这是一种语法糖,并由编译器翻译成具有相同语义的东西:

String s = "hello";
s = s + " world";
Run Code Online (Sandbox Code Playgroud)

有人可以证实这个事实吗?

SLa*_*aks 5

错误.

x += y只是简写x = x + y.
它仍然是一个常规的赋值操作,它不会修改任何现有的实例.