java编译器对字符串+运算的优化导致的有趣现象

来源:互联网 发布:新浪乐居php面试题 编辑:程序博客网 时间:2024/05/29 10:46

以前写了个字符串是否来自池的文章

只说明了有的字符串来自池,有的是在堆上新建,但是没有深究,只从现象去推测了,今天我们来看看究竟发生了什么

下图(源码和字节码)很清晰地看到s3实际上是新建了一个StringBuilder,然后append了def,然后再toString的,难怪会不同了

 

再来看下图,s1和s2定义为final之后,字节码简洁了很多,s3的值明确为abcdef且来自常量池

原创粉丝点击