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

Java编译器用串联替换StringBuilder

发布时间:2020-12-15 05:18:00 所属栏目:Java 来源:网络整理
导读:这是一些简单的 Java代码: String s = new StringBuilder().append("a").append("b").append("c").toString(); 我用JRE 1.6编译它,我在反编译的类文件中观察到以下内容: String s = "a" + "b" + "c"; 我有以下问题: 为什么编译器选择”而不是StringBuilde
这是一些简单的 Java代码:

String s = new StringBuilder().append("a").append("b").append("c").toString();

我用JRE 1.6编译它,我在反编译的类文件中观察到以下内容:

String s = "a" + "b" + "c";

我有以下问题:

>为什么编译器选择”而不是StringBuilder?
>我们是否有任何正式的Java规范可以证明这种行为是正确的?
>在这种情况下使用StringBuilder是否真的有意义,我们知道编译器会改变它吗?

解决方法

反过来说. for String是在幕后使用StringBuilder(或StringBuffer)实现的(参见 http://docs.oracle.com/javase/7/docs/api/java/lang/String.html或 http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.18.1).

因此,一旦编译完成,您的两个代码片段就难以区分.反编译器必须猜测原始形式.

(编辑:李大同)

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

    推荐文章
      热点阅读