字符串生成器


字符串生成器


創建成功的字符串對象,其長度是固定的,內容不能被改變和編譯。雖然使用“+”可以達到附加新字符或字符串的目的。但“+”會產生一個新的String實例,會在內存中創建新的字符串對象。如果重復地對字符串進行修改,將極大地增加系統開銷。而String-Builder類,大大提高了頻繁增加字符串的效率。

例:

public class Jerque { // 新建類
	public static void main(String[] args) { // 主方法
		String str = ""; // 創建空字符串
		// 定義對字符串執行操作的起始時間
		long starTime = System.currentTimeMillis();
		for (int i = 0; i < 10000; i++) { // 利用for循環執行10000次操作
			str = str + i; // 循環追加字符串
		}
		long endTime = System.currentTimeMillis(); // 定義對字符串操作后的時間
		long time = endTime - starTime; // 計算對字符串執行操作的時間
		System.out.println("Sting消耗時間:" + time); // 將執行的時間輸出
		StringBuilder builder = new StringBuilder(""); // 創建字符串生成器
		starTime = System.currentTimeMillis(); // 定義操作執行前的時間
		for (int j = 0; j < 10000; j++) { // 利用for循環進行操作
			builder.append(j); // 循環追加字符
		}
		endTime = System.currentTimeMillis(); // 定義操作后的時間
		time = endTime - starTime; // 追加操作執行的時間
		System.out.println("StringBuilder消耗時間:" + time); // 將操作時間輸出
	}
}

運行結果:
Sting消耗時間:1355
StringBuilder消耗時間:2

通過這一實例可以看出,兩種操作執行的時間差距很大。如果在程序中頻繁地附加字符串,建議使用StringBuilder。新創建的StringBuilder對象初始容量是16個字符,可以自行指定初始長度。如果附加的字符超過可容納的長度,則StringBuilder對象將自動增加長度以容納被附加的字符。若要使用StringBuilder最后輸出字符串結果,可使用toString()方法。利用StringBuilder類中的方法可動態地執行添加、刪除和插入等字符串的編輯操作。該類的常用方法如下:

1.StringBuilder append(String str)方法

其作用是把一個字符串追加到當前的StringBuilder后面,最后返回修改后StringBuilder對象。

語法:

builder.append(String str);

例:

public class StringBuilderDemo  {

	  public static void main(String[] args) {
	  
	    StringBuilder str = new StringBuilder("tutorials ");//創建字符串生成器
	    System.out.println("string = " + str);
	    
	    str.append("point");	//添加“point”到字符串生成器后
	
	    System.out.println("After append = " + str);		//輸出生成后的字符串
	    
	    str = new StringBuilder("1234 ");
	    System.out.println("string = " + str);
	    
	    str.append("!#$%");
	   
	    System.out.println("After append = " + str);
	  }
	

}

運行結果:
string = tutorials
After append = tutorials point
string = 1234
After append = 1234 !#$%

2.StringBuilder append(StringBuffer sb)方法

該方法將參數sb指定的字符串緩存StringBuffer的值追加到字符串生成器中。

語法:

builder.append(StringBuffrer sb);

例:

public class StringBuilderDemo {
	public static void main(String[] args) {
		  
	    StringBuilder str = new StringBuilder("compile ");	//創建字符串生成器
	    System.out.println("string = " + str);	//輸出字符串生成器的內容
	    StringBuffer buff = new StringBuffer("online ");	//將字符串緩存到StringBuffer中
	    System.out.println("buffer = " + buff);	//輸出緩存值
	     
	    str.append(buff);	//將緩存值追加到字符串生成器中

	    System.out.println("After append = " + str);	//輸出追加后的值
	  }


}

運行結果:
string = compile
buffer = online
After append = compile online

3.StringBuilder insert(int offset ,String str)方法

該方法用於向字符串生成器中的指定位置插入數據內容。

語法:

builder.inset(int offest , String str);

例:

public class StringBuilderDemo {
	public static void main(String[] args) {
		  
	    StringBuilder str = new StringBuilder("tutorials website");
	    //創建字符串生成器
	    System.out.println("string = " + str);	//輸出字符串生成器的內容
	        
	    str.insert(9, "point");	//在指定位置插入字符串

	    System.out.print("After insertion = ");	
	    System.out.println(str.toString());
	  //輸出插入字符串后的值
	  }      


}

運行結果:
string = tutorials website
After insertion = tutorialspoint website

4.StringBuilder delete(int start,int end)方法

該方法用於移除此序列的子字符串中的字符。該子字符串從指定的start處開始,一直到索引end-1處的字符,如果不存在這種字符,則一直到序列尾部。如果start等於end,則不發生任何更改。

語法:

builder.delete(int start,String end);

例:

public class StringBuilderDemo {
	public static void main(String[] args) {
		  
	    StringBuilder str = new StringBuilder("Java lang package");	//創建字符串生成器
	    System.out.println("string = " + str);
	 
	    str.delete(4, 9);	//刪除指定位置的內容
	    System.out.println("After deletion = " + str);
	  }


}

運行結果:
string = Java lang package
After deletion = Java package

5.String toString()方法

該方法將字符生成器中的值轉換為字符串

語法:

Str.toString();

例:

public class Test {

	public static void main(String[] args) {
		
		StringBuilder str = new StringBuilder("Hello World");
	    System.out.print("Return Value :");
	    System.out.println(str.toString());


	}

}

運行結果:
Return Value :Hello World


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM