对于字符串连接,我们一般可以用“+”来实现。但是这样每次连接都产生一个实例,会在字符串中创建新的字符串对象。如果频繁对字符串进行修改,会增加系统开销。
而StringBuilder(API:一个可变的字符序列,有些书称为:字符串生成器)可以解决这个问题。
它有以下方法:append(),insert(),delete()……大家都可以查找API(J2SE5.0+)
以下将对这个类进行测试,看看是否比“+”有更高的效率。
先说下测试用到的方法:
append(args);追加字符序列。参数可以为int,boolean,char,String,double或者另一个字符串生成器
//以下对比两种追加字符方式的效率
class test5
{
public static void main(String[] args)
{
long startTime = System.currentTimeMillis();
String str = "";
for(int i = 0; i < 10000; i++)
str += i;
long endTime = System.currentTimeMillis();
System.out.println("/nString方法消耗的时间是:"+(endTime-startTime));
long startTime2 = System.currentTimeMillis();
StringBuilder strb = new StringBuilder("");
//比String的+连接方法多执行9倍。这样才能看到时间,因为实在太快了=_=!
for(int i = 0; i < 100000; i++)
strb.append(i);
long endTime2 = System.currentTimeMillis();
System.out.println("/nStringBuilder方法消耗的时间是:"+(endTime2-startTime2));
}
}
看看执行效果:
虽然StringBuilder多执行了9倍,但花费的时间却比String少了2个数量级。
可想而知。。。