1.效率比较
结果:
代码:
public class ExampleSplicing {
public static void main(String[] args) {
long n = 50000;
long start1 = System.currentTimeMillis();
String s1 = new String("splicing");
for (long i = 0; i < n; i++)
{
s1 += "--";
}
long end1 = System.currentTimeMillis();
long time1 = end1 - start1;
System.out.println("用String+=拼接字符串的时间是:" + time1);
long start2 = System.currentTimeMillis();
String s2 = new String("splicing");
for (long i = 0; i < n; i++)
{
s2 = s2 + "--";
}
long end2 = System.currentTimeMillis();
long time2 = end2 - start2;
System.out.println("用String=String+拼接字符串的时间" + time2);
long start3 = System.currentTimeMillis();
String s3 = new String("splicing");
for (long i = 0; i < n; i++)
{
s3 = s3.concat("--");
}
long end3 = System.currentTimeMillis();
long time3 = end3 - start3;
System.out.println("用String.concat拼接字符串的时间" + time3);
long start4 = System.currentTimeMillis();
StringBuffer s4 = new StringBuffer("splicing");
for (long i = 0; i < n; i++)
{
s4.append("--");
}
long end4 = System.currentTimeMillis();
long time4 = end4 - start4;
System.out.println("用StringBuffer.append拼接字符串的时间" + time4);
long start5 = System.currentTimeMillis();
StringBuilder s5 = new StringBuilder("splicing");
for (long i = 0; i < n; i++)
{
s5.append("--");
}
long end5 = System.currentTimeMillis();
long time5 = end5 - start5;
System.out.println("用StringBuilder.append拼接字符串的时间" + time5);
}
}
结论:StringBuilder最快
String拼接是创建对象的过程,而StringBuilder是只有一个对象,里面用的是char是可以扩容的,而字符串长度是固定的
100以内
都是接近于0的