thinking in java 第四版 第十三章 字符串 练习1

本文对比了三种不同的字符串拼接方式在编译后的性能表现,分别使用直接拼接、StringBuilder拼接带加法运算符和StringBuilder逐步拼接。结果显示,逐步拼接的方式性能最优,而直接拼接的表现最差。文章还探讨了Test1优于Test3的原因,尽管具体细节未完全解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题简化:哪个编译最优

public class Test1 {
    public static String main(String args[]) {
        String valve1 = new String("1");
        return "valve1 = " + valve1 + " ";
    }
}
public class Test2 {
    public static String main(String args[]) {
        StringBuilder sb = new StringBuilder();
        String valve1 = new String("1");
        sb.append("valve1 = " + valve1 + " ");
        return sb.toString();
    }
}
public class Test3 {
    public static String main(String args[]) {
        StringBuilder sb = new StringBuilder();
        String valve1 = new String("1");
        sb.append("valve1 = ");
        sb.append(valve1);
        sb.append(" ");
        return sb.toString();
    }
}

 

Test1反编译结果

 Test2反编译结果

 Test3反编译结果

结果

        Test1>Test3>Test2

总结

最终结果是用append()语句一点点拼接来的。不要走捷径,如append(a + ":" + c);,他会另外创建一个StringBuilder对象处理括号内的字符串操作。

未解决问题

Test1为什么大于Test3?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值