使用string,stringbuffer,stringbuild分别拼接字符串,看看哪个效率更高

如题所述

这种代码在程序里应该随处可见,一部分人不知道这段代码的缺陷在哪,另一部分人知道这样写不好,但是太顺手了下意识就写了。
在Java里,String是个不可变对象,所以右边的每次赋值操作都会new一个新对象,b+c,b+c+d,至少会new两个,很明显性能不佳。但是这个问题没有大多数情况下没我们想象的那么严重,因为编译器在编译时会对String做很多优化,但是对于一些运行时的赋值和修改操作,编译器很难优化,这种时候,就强烈不推荐这样写,虽然写的很顺手 ,但是性能不行,如果存在字符串的修改操作,就应该用StringBuilder和StringBuffer。
下面,就用一个简单的测试,来看看他们之间的性能差别,让我们心里有数。
1. 测试String直接拼接

1 public static void main(String[] args) {
2 long begin = System.currentTimeMillis();
3 String str = "";
4 for(int i=0;i<10000;i++){
5 str = str+i;
6 }
7 long end = System.currentTimeMillis();
8 long time = end - begin;
9 System.out.println(time+"");
10 }
温馨提示:答案为网友推荐,仅供参考