案例一
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