StringBuild的比较,代码如下:
public class Test {
public static void main(String[] args)
{
String a = "a";
String b = "b";
String c = "c";
long start = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
String string = a + b + c;
if (string.equals("abc")) {}
}
System.out.println("string+ cost time:" + (System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(a);
stringBuffer.append(b);
stringBuffer.append(c);
String string = stringBuffer.toString();
if (string.equals("abc")) {}
}
System.out.println("stringbuffer cost time:" + (System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(a);
stringBuilder.append(b);
stringBuilder.append(c);
String string = stringBuilder.toString();
if (string.equals("abc")) {}
}
System.out.println("stringbuilder cost time:" + (System.currentTimeMillis() - start) + "ms");
}
}
结果如下:
正如上面文章所说,此处的String其实调用的两次StringBuild的append()方法,相较于后两种都是更快的。
结论:在string+写成一个表达式的时候(更准确的说,是写成一个赋值语句的时候),效率其实比另两个更快,但如果不是这样的话,则效率会明显低于另外两个。