一个String对象的长度是固定 的,不能更改其内容。当你用“+”连接两个字符串从而创建新的字符串时,你其实创建了一个新的String对象。如果频繁的这样子操作,就会产生大量的垃圾并且效率低。
这种情况下可以考虑使用StringBuilder。
/*
* 作者:阳光的味道
* 功能:示范String类的对象的intern()方法
* 日期:2010/11/07
* */
public class AppedStringTest {
public static void main(String[] args) {
String text = "";
long beginTime = System.currentTimeMillis();
for(int i = 0 ; i < 10000 ; i ++){
text = text + i ;
}
long endTime = System.currentTimeMillis();
System.out.println("String的执行时间:" + (endTime - beginTime));
StringBuilder builder = new StringBuilder();
beginTime = System.currentTimeMillis();
for(int i = 0 ; i < 10000 ; i ++){
builder.append(i);
}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder执行时间:" + (endTime - beginTime));
}
}
/*
* out:
* String的执行时间:420
StringBuilder执行时间:3*/
StringBuilder是jdk5.0中新增的类,在之前使用的是java.lang.String.Buffer。事实上,StingBuilder被设计为与StringBuffer具有相同操作的接口。在单机非多线程的情况下使用StringBuilder会有较高的效率,这是因为StringBuilder没有处理同步(Synchronized)问题。而StringBuffer则会处理同步问题,其在多线程中应用较多。
本文通过对比String和StringBuilder在大量字符串拼接操作时的性能表现,展示了StringBuilder在非多线程环境下更为高效的原因,并介绍了两者的基本特性。
373

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



