加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java的不变性,使用“=”运算符

发布时间:2020-12-15 05:10:11 所属栏目:Java 来源:网络整理
导读:关于 Java中字符串不变性的 questions有 plenty,其中问题的作者实际上重新分配了引用. 然而,有一个显着的案例,似乎没有重新分配字符串: String s = "hello";s += " world"; 您将其视为字符串的实际修改.在家尝试一下. 我很确定这是一种语法糖,并由编译器翻
关于 Java中字符串不变性的 questions有 plenty,其中问题的作者实际上重新分配了引用.

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

String s = "hello";
s += " world";

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

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

String s = "hello";
s = s + " world";

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

解决方法

我既不能证实也不能否认它.如果优化编译器可以向自己证明没有其他线程可以“看到”s的初始(pre- =)值,则可以自由地优化掉串联并将代码编译为等效的

String s = "hello world";

只要编译器遵循内存模型,编译器就可以很自由地将它们从源代码转换为字节代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读