运行结果可以看到String类的更改是最耗时的
大概是Stringbuilder,StringBuffer的百倍左右
因为每次都要重新开辟新的地址空间来复制更改指针赋值
StringBuilder是可以变长的String类型,效率很快,但是不能保证一个线程安全
StringBuffer为了保证一个线程安全做了很多的操作.效率相对较快,但比起前者,慢了一倍左右
在JDK5.0版本后新增了这个类
public class demo {
public static void main(String[] args) {
String str="";
StringBuffer sb = new StringBuffer("");
StringBuilder sd = new StringBuilder("");
long begin_time = System.currentTimeMillis();
long end_time;
for (int i = 0; i < 20000; i++) {
str= str+i;
}
end_time = System.currentTimeMillis();
System.out.println("string: "+(end_time-begin_time) );
begin_time = System.currentTimeMillis();
for (int i = 0; i < 20000; i++) {
sb.append(String.valueOf(i));
}
end_time = System.currentTimeMillis();
System.out.println("StringBuffer: "+(end_time-begin_time) );
begin_time = System.currentTimeMillis();
for (int i = 0; i < 20000; i++) {
sd.append(String.valueOf(i));
}
end_time = System.currentTimeMillis();
System.out.println("StringBuilder: "+(end_time-begin_time) );
}
}
本文通过实验对比了String、StringBuffer与StringBuilder在进行大量字符串拼接操作时的性能表现。结果显示,StringBuilder由于其可变性和非线程安全性,在性能上优于StringBuffer;而String的不可变性导致其性能最低。
1万+

被折叠的 条评论
为什么被折叠?



