创建成功的字符串对象,其长度是固定的,内容不能被编译,虽然可以使用符号“+”可以达到附加新字符或者字符串的目的,但通过“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大的增加系统开销。而J2SE 5.0新增了可变的字符序列String-Builder类,大大提高了频繁增加字符串的效率。
实例代码如下,验证字符串操作和字符串操作的效率。:
public class Nmber {
public static void main(String[] args) {
String str="";
long starTime = System.currentTimeMillis();
for(int i=0;i<1000;i++)
str=str+i;
}
long endTime=System.currentTimeMillis();
long time=endTime-starTime;
System.out.println("运用String输出的时间为"+time);
StringBuilder builder=new StringBuilder("");
starTime=System.currentTimeMillis();
for(int j=0;j<1000;j++) {
builder.append(j);
}
endTime=System.currentTimeMillis();
time=endTime-starTime;
System.out.println("StringBuilder消耗的时间"+time);
}
}
由此代码可以很明显可以看出StringBuilder所花时间比直接String类简短很多。新创建的StringBuilder字符对象初始是16个字符,可以自行制定初始长度。如果附加字符超过了可容纳的长度,则StringBuilder对象将自动增加长度以容纳被附加的字符。若要使用StringBuilder最后输出字符串结果,可使用toString()方法。利用StringBuilder类中的方法可动态的执行添加、删除和插入字符串的编辑操作。
该类的常用方法如下:
(1) append()方法
该方法用于向字符串生成器中追加内容。通过该方法的多个重载模式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符生成器
语法如下:
append(content)
其中content表示要追加到字符串生成器中的内容,可以是任何类型的数据或者其他对象。
(2) insert(int offset,arg)
offset:字符串生成器的位置。该参数必须大于等于0;且小于等于此或其他对象。
arg:将插入至字符串生成器的位置。该参数可以是任何数据类型。
(3)delete(int start,int end)方法
移除此序列的子字符串中的字符。该字符串从指定的start开始,一直到索引end-1处的字符,如果不存在这种字符,则一直到序列尾部。如果start等于end,则不发生更改。
语法如下:
delete(int start,int end)
start:将要删除的字符串的起点,
end:将要删除的字符串的终点位置