在項目開發中,String是一個必不可少的工具類,但是String類自身有一個最大的缺陷,內容一旦聲明,則不可改變,所以在jdk中爲了方便用戶修改字符串的內容提供了StringBuffer類。
StringBuffer()類並不像String類那樣可以直接通過聲明字符串常量的方式進行實例化,而是必須像普通類對象使用一樣,首先通過構造方法進行對象實例化,而後纔可以調用方法執行處理。
StringBuffer類常用方法:
範例:修改StringBuffer內容
(連接,類似於String中的“+”)
public class JavaAPIDemo {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer("www."); //實例化StringBuffer
change(buf); //修改StringBuffer內容
String data=buf.toString(); //將StringBuffer變爲String實例
System.out.println(data);
}
private static void change(StringBuffer buf) {
buf.append("類庫.").append("com");
}
}
執行結果
www.類庫.com
用戶使用”String str="a”+“b”+“c”,定義字符串時,程序編譯後的結果等價於以下操作;
StringBuffer buf=new StringBuffer();
buf.append(“a.”).append(“b”).append(“c”);
範例:插入數據
(索引位置插入替換。)
public class JavaAPIDemo2b {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer();
buf.append(".com").insert(0, "www.").insert(4, "類庫");
System.out.println(buf);
}
}
執行結果
www.類庫.com
範例:刪除指定範圍中的內容
(索引前刪後不刪)
public class JavaAPIDemo2b3c {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer();
buf.append("hello java !").delete(6,11).insert(6, "lilei");
System.out.println(buf);
}
}
執行結果
hello lilei!
範例:字符串反轉
(最有特點的方法)
package com.lxh.fifteenchapter;
public class javaAPIDemo4d {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer();
buf.append("hyguyhguhu");
System.out.println(buf.reverse());
}
}
執行結果
uhughyugyh
StringBuffer與StringBuilder
StringBuffer類是在jdk1.0提供的。jdk1.5提供了StringBuilder類。這兩個類的功能類似,都是可修改的字符串類型,區別在於,StringBuffer類中的方法使用了synchronized關鍵字定義。所以StringBuffer是線程安全的,StringBuilder是非線程安全的方法,也就是線程不安全。