在for循环中,比较常用的字符串拼接方式包括以下五种方式:
- String,+
- String.concat
- apache.commons.lang3.StringUtils.join
- StringBuffer
- StringBuilder
接下来,依次分析上述五种方式
- String,+
public final static void stringStr(){
String str = "Holle";
Long time = System.currentTimeMillis();
for (int i=0;i<20000;i++){
str += "测试字符串拼接方式,各拼接方式时间";
}
Long time1 = System.currentTimeMillis();
System.out.println("-----使用String+:"+(time1 - time));
}
输出:-----使用String+:4680
- String.concat
public final static void stringConcat(){
String hello = "hello";
String str = "测试字符串拼接方式,各拼接方式时间";
String test = "";
Long time = System.currentTimeMillis();
for (int i=0;i<20000;i++){
test = test.concat(hello).concat(str);
}
Long time1 = System.currentTimeMillis();
System.out.println("-----使用String.concat:"+(time1 - time));
}
输入:-----使用String.concat:3373
- apache.commons.lang3.StringUtils.join
public final static void stringUtilsJoin(){
String test = "";
String[] list ={"Holle","测试字符串拼接方式,各拼接方式时间"};
Long time = System.currentTimeMillis();
for (int i=0;i<20000;i++){
test = StringUtils.join(list,"+");
}
Long time1 = System.currentTimeMillis();
System.out.println("-----使用StringUtils.join:"+(time1-time));
}
输入:-----使用StringUtils.join:40
- StringBuffer.append
public final static void stringBuffer(){
StringBuffer buffer = new StringBuffer("Holle");
Long time = System.currentTimeMillis();
for (int i=0;i<20000;i++){
buffer.append("测试字符串拼接方式,各拼接方式时间");
}
Long time3 = System.currentTimeMillis();
System.out.println("-----使用StringBuffer:"+(time3-time));
}
输出:-----使用StringBuffer:10
- StringBuilder.append
public final static void stringBuilder(){
StringBuilder builder = new StringBuilder("Holle");
Long time = System.currentTimeMillis();
for (int i=0;i<20000;i++){
builder.append("测试字符串拼接方式,各拼接方式时间");
}
Long time1 = System.currentTimeMillis();
System.out.println("-----使用StringBuilder:"+(time1-time));
}
输出:-----使用StringBuilder:4
从上述运行结果来说,在for循环中使用字符串拼接的速度:
StringBuilder>StringBuffer>StringUtils.join>String.concat>String+