返回类型:字符串类型String
功能:将指定字符串生成器内容返回一个String类型,完成从StringBuilder到String的转换
存在原因:系统没有相应的重载赋值运算符,可以完成从StringBuilder到String的转换
转换方法:1.通过new String(StringBuilder Str)的方法将StringBuilder赋值给String
2.使用toString()方法,借用赋值运算符=进行同类型赋值
注:StringBuilder也可以直接被输出
//str.toString()
//将指定字符串生成器返回一个String类型
StringBuilder SB=new StringBuilder("StringBuilder");
//String St=SB; //error 不存在该运算符的重载
//String St=new String(SB) //可以用StringBuilder进行构造
String St=SB.toString(); //toString完成从字符串生成器到字符串String的转换
System.out.println(St);
System.out.println(SB); //可直接输出字符串生成器哦`
功能:将content连接到指定字符串生成器后,content可以是任意数据类型。如int,long,boolean,double,Strng..
//append(content)
//content 表示要追加到字符串的任何内容,可以是任何类型的数据和,e:int boolean,char,String,double
StringBuilder str1=new StringBuilder("Let it go,");
String str2=new String("you can't.");
str1.append(str2);
System.out.println(str1); //Let it go,you can't.
功能:在字符串生成器指定位置offset后插入指定内容content,content可以是任意数据类型。如int,long,boolean,double,Strng... offset的范围为0~Length()-1
//insert(int offset,content)
//offset 字符串生成器的某个位置,范围 0~Length()-1
//content 插入字符串说生成器指定位置的内容,可以是任何的数据类型
str1.insert(9,"???");
System.out.println(str1); //Let it go???,you can't.
返回类型:字符串生成器类型StringBuilder
功能:删除指定字符串从start-end-1的字串,如果start=end ,则不发生更改
//delete(int start,int end)
//删除指定字符串从start-end-1的字串,如果start=end 返回子字符串
str1.delete(9, 12);
System.out.println(str1.toString()); //Let it go,you can't.
创建成功的字符串对象(String),其长度是固定的,内容不能被改变和编译,虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象,如果重复地对字符串进行修改,会极大增加系统开销。
而字符串生成器(StringBuilder)可以自动增加长度以容纳被附加的字符,动态执行添加,删除,和插入等字符串的编辑操作,而不产生新对象,减少系统时间和空间消耗
public class StringBuilder_pro {
public static void main(String[] args) {
String str="";
long StartTime=System.currentTimeMillis();
for(int i=0;i<10000;i++) {
str=str+i;
}
long endTime=System.currentTimeMillis();
long time=endTime-StartTime;
System.out.println("String time: "+time); //String time: 151
StringBuilder builder=new StringBuilder("");
StartTime=System.currentTimeMillis();
for(int i=0;i<10000;i++) {
builder.append(i);
}
endTime=System.currentTimeMillis();
time=endTime-StartTime;
System.out.println("StringBuilder time: "+time); //StringBuilder time: 1
}
}
String在重复10000次添加字符所消耗的时间比起StringBuilder如同一座大山,StringBuilder由于在插入字符过程中是在本身上进行长度增加,没有产生新对象,节约时间。