public class Test {
public static void main(String[] args) {
System.out.println("String处理需要的时间 :" + testTime("abc"));
System.out.println("StringBuffer处理需要的时间:" + testTime(new StringBuffer("abc")));
System.out.println("StringBuilder处理需要的时间" + testTime(new StringBuilder("abc")));
}
static <E> long testTime(E e) {
long startTime = System.currentTimeMillis();
int n = 100000;
for (int i = 0; i < n; i++) {
if (e instanceof String) {
String s = (String)e;
s += "abc";
} else if (e instanceof StringBuilder) {
StringBuilder s = (StringBuilder)e;
s.append("abc");
} else if (e instanceof StringBuffer) {
StringBuffer s = (StringBuffer)e;
s.append("abc");
}
}
return System.currentTimeMillis() - startTime;
}
}
运行结果如下图
可见对字符串处理的效率,StringBuilder最高,StringBuffer其次,String最慢
以下总结转自其他博主的内容:
由上边的图可以清楚的看出,为什么大家都鼓励用StringBuffer连接字符串了。在连接次数少
的情况下,String的低效率表现并不是很突出,但是一旦连接次数多的时候,性能影响是很大的,String进
行20万次字符串的连接,大约需要45s时间,而StringBuffer只需要10毫秒,相差接近5000倍以上。而
StringBuffer和StringBuilder差别并不大,StringBuilder比StringBuffer稍微快点,我想是因为StringBuffer
是线程序安全的,StringBuilder不是线程序安全的,所以StringBuffer稍微慢点。