Java 拼接字符串速度对比 +"", StringBuffer.append(),StringBuilder.append(),String.concat
这个是测试100000次循环拼接结果 单位:mm 毫秒
+:691545
stringBuffer:11
stringBuilder:15
concat:338576
这个是测试10000次循环拼接结果 单位:mm 毫秒
+:8852
stringBuffer:2
stringBuilder:3
concat:2277
如果是循环次数低的话,差距也不是很大。
package com.lxw.rabbitmq;
// 对比 字符串拼接速度,效率
public class Test01 {
public static void main(String[] args) {
System.out.println("+:"+getStringAppjia(1000000));
System.out.println("stringBuffer:"+getStringBuilder(1000000));
System.out.println("stringBuilder:"+getStringBuffer(1000000));
System.out.println("concat:"+getConcat(1000000));
}
// +""拼接
public static Long getStringAppjia(int time) {
long start = System.currentTimeMillis();
String s = new String("沙雕卷饼王");
for (int i = 0; i < time; i++) {
s += "沙雕";
}
long end = System.currentTimeMillis();
// System.out.println(s);
return end - start;
}
// StringBuffer.append() 拼接
public static Long getStringBuffer(int time) {
long start = System.currentTimeMillis();
StringBuffer sb = new StringBuffer("沙雕卷饼王");
for (int i = 0; i < time; i++) {
sb = sb.append("沙雕");
}
long end = System.currentTimeMillis();
// System.out.println(sb);
return end - start;
}
//StringBuilder.append()拼接
public static Long getStringBuilder(int time) {
long start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder("沙雕卷饼王");
for (int i = 0; i < time; i++) {
sb = sb.append("沙雕");
}
long end = System.currentTimeMillis();
// System.out.println(sb);
return end - start;
}
//concat()拼接
public static Long getConcat(int time) {
long start = System.currentTimeMillis();
String sb = new String("沙雕卷饼王");
for (int i = 0; i < time; i++) {
sb = sb.concat("沙雕");
}
long end = System.currentTimeMillis();
// System.out.println(sb);
return end - start;
}
}
+:691545
stringBuffer:11
stringBuilder:15
concat:338576