我们所知道的字符串String的拼接有: “+” 、 concat () 方式实现,或者使用StringBuilder、StringBuffer类实现。这几种方式性能的从低到高进行排序,则顺序为:“+” < concat () < StringBuffer < StringBuilder 。使用"+"性能是最差的,应该避免使用!!!
StringBuilder的性能是最高的,StringBuffer和StringBuilder的区别是:StringBuffer是线程安全的,而StringBuilder不是。在高并发的应用中,应该考虑使用StringBuffer! !它们实现的接口都是一样的,只不过 StringBuffer的很多方法都加上了synchronized关键字修饰。
/**
*
* @author 小钦
*
*/
public class TestString {
public static void main(String[] args) {
int num=100000;
addTime(num);
concatTime(num);
stringBufferTime(num);
stringBuilderTime(num);
}
public static void addTime(int num){
long start=System.currentTimeMillis();
String str="";
for (int i = 0; i < num; i++) {
str+=i;
}
System.out.println("字符串拼接使用 + 耗时:" +(System.currentTimeMillis()-start)+"ms");
}
public static void concatTime(int num){
long start=System.currentTimeMillis();
String str="";
for (int i = 0; i < num; i++) {
str.concat(String.valueOf(i));
}
System.out.println("字符串拼接使用 concat 耗时:" +(System.currentTimeMillis()-start)+"ms");
}
public static void stringBufferTime(int num){
long start=System.currentTimeMillis();
StringBuffer str=new StringBuffer();
for (int i = 0; i < num; i++) {
str.append(String.valueOf(i));
}
System.out.println("字符串拼接使用 StringBuffer 耗时:" +(System.currentTimeMillis()-start)+"ms");
}
public static void stringBuilderTime(int num){
long start=System.currentTimeMillis();
StringBuilder str=new StringBuilder();
for (int i = 0; i < num; i++) {
str.append(String.valueOf(i));
}
System.out.println("字符串拼接使用 StringBuilder 耗时:" +(System.currentTimeMillis()-start)+"ms");
}
}
输出:
字符串拼接使用 + 耗时:20325ms
字符串拼接使用 concat 耗时:12ms
字符串拼接使用 StringBuffer 耗时:7ms
字符串拼接使用 StringBuilder 耗时:5ms