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"; 只要编译器遵循内存模型,编译器就可以很自由地将它们从源代码转换为字节代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |