为了账号安全,请及时绑定邮箱和手机立即绑定

求大佬指点哈!java String

求大佬指点哈!java String

料青山看我应如是 2019-08-21 20:09:52
Stringb="abcd"Stringa="a"Stringc="bcd"Stringd=a+csystem.out.println(d==b)//false为什么是false根据java字符串常量只能有一份的原则,应该是true才对。这里的内存图是什么样的
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

JAVA的字符串常量只能有一份的原则???
什么时候这种虚拟机优化,都能被当做原则了,我的天,谁给你保证的???
Stringd=a+c;
这个赋值当然是在这句执行的时候才会计算啊,计算出来的是一个新的变量,而不是字符串常量池里的那个。说起来,这里也有一个优化的问题,字符串拼接会被优化为类似于StringBuilder操作。你要非要说,为啥常量计算不直接编译的时候就能计算了,就完事了呗……这个是程序正确性的问题了,已经不是优化的问题了。
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 364 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信