一、String、StringBuilder、StringBuffer的执行效率
StringBuilder > StringBuffer > String
二、测试代码
package cn.test;
public class Test {
final static int COUNT = 10000 * 1;
public static void main(String[] args) {
stringAdd(COUNT);
stringConcat(COUNT);
stringBuilder(COUNT);
stringBuffer(COUNT);
}
public static void stringAdd(int count) {
long start = System.currentTimeMillis();
String s = "";
for (int i = 0; i < count; i++) {
s += "1";
}
System.out.println("StringAdd:" + (System.currentTimeMillis() - start));
}
public static void stringConcat(int count) {
long start = System.currentTimeMillis();
String s = "";
for (int i = 0; i < count; i++) {
s = s.concat("1");
}
System.out.println("StringConcat:" + (System.currentTimeMillis() - start));
}
public static void stringBuilder(int count) {
long start = System.currentTimeMillis();
StringBuilder s = new StringBuilder();
for (int i = 0; i < count; i++) {
s.append("1");
}
System.out.println("StringBuilder:" + (System.currentTimeMillis() - start));
}
public static void stringBuffer(int count) {
long start = System.currentTimeMillis();
StringBuffer s = new StringBuffer();
for (int i = 0; i < count; i++) {
s.append("1");
}
System.out.println("StringBuffer:" + (System.currentTimeMillis() - start));
}
}
COUNT的值设置
(1)10000*1
StringAdd:89
StringConcat:16
StringBuilder:1
StringBuffer:1
(2)10000*10
StringAdd:4621
StringConcat:1383
StringBuilder:3
StringBuffer:4
(3)10000*100
StringAdd:215076
StringConcat:154182
StringBuilder:16
StringBuffer:18
(4)10000*1000(String花费时间太多了,没办法测试这个数量级)
StringBuilder:50
StringBuffer:264
(5)10000*10000(String花费时间太多了,没办法测试这个数量级)
StringBuilder:377
StringBuffer:2558