String的"+"与StringBuffer效率问题

案例一

1.

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

2.

    String s = "";
    s += "a";
    s +="b";
    s +="c";
  1. 3.
    StringBuilder result = new StringBuilder();
    result.append("a").append("b").append("c");
    String s = result.toString();

运行效率:2>3>1
分析:
1.因为直接+,所以内存中每次需要new StringBuilder()对象,每次需要append()两次生成新的字符串,然后调用toString方法复制给s。所以下来总共,3次创建StringBuilder,6次append,3次toString
2.编译器直接对”+”优化,直接赋值
3.总共1次创建StringBuilder,3次append,1次toString

案例2

1)

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

2)

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

运行效率 2) > 1)
1)运行时创建1个StringBuilder对象,3次append(s,a,b各一次),一次toString调用
2)运行时,编译器发现右侧”+“,直接优化成 ab,然后与左侧相加,所以 1次StringBuilder对象,2次append,1次toString

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值