Java学习笔记-字符串生成器(StringBuilder)

  • Java学习笔记-字符串生成器(StringBuilder)


  • String  toString()

返回类型:字符串类型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);   //可直接输出字符串生成器哦`

  • StringBuilder   append(type content)

功能:将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.


  • StringBuider  insert(int offset,content)

功能:在字符串生成器指定位置offset后插入指定内容contentcontent可以是任意数据类型。如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  delete(int start,int end)

返回类型:字符串生成器类型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.

  • 字符串生成器(StringBuilder)与字符串(String)

创建成功的字符串对象(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由于在插入字符过程中是在本身上进行长度增加,没有产生新对象,节约时间。

你可能感兴趣的:(Java)