代码演示
这里我们设定循环10w次来拼接一个字符串, 比较代码如下
public static void main(String[] argss) {
long l = System.currentTimeMillis();
//show1();
show2();
System.out.println(System.currentTimeMillis()-l);
}
public static void show1() {
String str = "";
for (int i = 0; i < 100000; i++) {
str += "a";
}
}
public static void show2() {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 100000; i++) {
sb.append("a");
}
}
测试结果
String拼接耗时:3180
StringBuffer拼接耗时:7
Process finished with exit code 0
总结
- 通过
StringBuffer
的append()
方式添加字符串的效率远远高于使用String
的字符串拼接方式 - 通过
StringBuffer
的append()
方式自始至终只创建了一个StringBuffer
对象 - 通过
String
的字符串创建方式生成了很多的StringBuffer
对象和String
对象(toString()
方法) - 通过
String
的字符串创建方式因生成较多对象, 导致内存占用大, 如果进行GC
, 需要耗时更多的时间
注意: 使用
StringBuffer
可以设定容器大小,减少扩容带来的额外耗时