字符串生成器
創建成功的字符串對象,其長度是固定的,內容不能被改變和編譯。雖然使用“+”可以達到附加新字符或字符串的目的。但“+”會產生一個新的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