都说字符串的多次连接使用StringBuilder(多线程用StringBuffer)的append方法,比直接用字符串+字符串要效率高,但这个多次的界限在哪里呢?下面我写了一个简单的程序来进行测试。 public class appendVSadd { private static String temp = "123"; public static void main(String[] args){ append(); add(); }
public static void append(){
long start = System.currentTimeMillis();
String t = "";
for (int i = 0; i < 1000000; i++){
StringBuilder s = new StringBuilder(30);
for(int j = 0; j < 7; j++){
s.append(temp);
}
t = s.toString();
}
long end = System.currentTimeMillis() - start;
System.out.println(end);
System.out.println(t);
}
public static void add(){
long start = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++){
String s = "";
for(int j = 0; j < 7; j++){
s += temp;
}
}
long end = System.currentTimeMillis() - start;
System.out.println(end);
}
} 当j=7时,花费时间差不多,当j > 7时StringBuilder要比字符串相加快,但j < 7时字符串相加要比StringBuilder快。