您的位置:首页 > Web前端

String的"+"与StringBuffer效率问题

2016-04-27 13:57 337 查看

案例一

1.

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


2.

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


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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: