複製鏈接
請複製以下鏈接發送給好友

StringBuffer

鎖定
StringBuffer,是可以存儲和操作字符串,即包含多個字符的字符串數據。
String類是字符串常量,是不可更改的常量。而StringBuffer是字符串變量,它的對象是可以擴充和修改的。
中文名
字符串緩衝
外文名
StringBuffer
作    用
存儲和操作字符
包    含
包含多個字符的字符串數據
對    象
對象是可以擴充和修改的

StringBuffer介紹

StringBuffer是使用緩衝區的,本身也是操作字符串的,但與String類不同,String類中的內容一旦聲明之後不可改變,改變的只是其內存地址的指向,而StringBuffer中的內容是可以改變的 [1] 
對於StringBuffer而言,本身是一個具體的操作類,所以不能像String那樣採用直接賦值的方式進行對象實例化,必須通過構造方法完成。
StringBuffer連接字符操作
  • 當一個字符串的內容需要被經常改變時就要使用StringBuffer。
  • 在StringBuffer中使用append()方法,完成字符串的連接操作。

StringBufferStringBuffer方法

以下是 StringBuffer 類支持的主要方法:
序號
方法描述
1
public StringBuffer append(String s)
將指定的字符串追加到此字符序列。
2
public StringBuffer reverse()
將此字符序列用其反轉形式取代。
3
public delete(int start, int end)
移除此序列的子字符串中的字符。
4
public insert(int offset, int i)
將int參數的字符串表示形式插入此序列中。
5
replace(int start, int end, String str)
使用給定String中的字符替換此序列的子字符串中的字符。
下面的列表裏的方法和 String 類的方法類似:
序號
方法描述
1
int capacity()
返回當前容量。
2
char charAt(int index)
返回此序列中指定索引處的char值。
3
void ensureCapacity(int minimumCapacity)
確保容量至少等於指定的最小值。
4
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
將字符從此序列複製到目標字符數組dst。
5
int indexOf(String str)
返回第一次出現的指定子字符串在該字符串中的索引。
6
int indexOf(String str, int fromIndex)
從指定的索引處開始,返回第一次出現的指定子字符串在該字符串中的索引。
7
int lastIndexOf(String str)
返回最右邊出現的指定子字符串在此字符串中的索引。
8
int lastIndexOf(String str, int fromIndex)
返回 String 對象中子字符串最後出現的位置。
9
int length()
返回長度(字符數)。
10
void setCharAt(int index, char ch)
將給定索引處的字符設置為ch。
11
void setLength(int newLength)
設置字符序列的長度。
12
CharSequence subSequence(int start, int end)
返回一個新的字符序列,該字符序列是此序列的子序列。
13
String substring(int start)
返回一個新的String,它包含此字符序列當前所包含的字符子序列。
14
String substring(int start, int end)
返回一個新的String,它包含此序列當前所包含的字符子序列。
15
String toString()
返回此序列中數據的字符串表示形式。

StringBufferStringBuffer對象的初始化

StringBuffer對象的初始化不像String類的初始化一樣,Java提供的有特殊的語法,而通常情況下一般使用構造方法進行初始化。
例如:
StringBuffer s = new StringBuffer();
這樣初始化出的StringBuffer對象是一個空的對象,就是我犯的錯誤。
如果需要創建帶有內容的StringBuffer對象,則可以使用:
StringBuffer s = new StringBuffer(“abc”);
這樣初始化出的StringBuffer對象的內容就是字符串”abc”。
需要注意的是,StringBuffer和String屬於不同的類型,也不能直接進行強制類型轉換

StringBuffer字符串連接操作

package 字符串處理;
public class StringBufferDemo01{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 聲明StringBuffer對象 
        buf.append("Hello ") ;                    // 向StringBuffer中添加內容
        buf.append("World").append("!!!") ;        // 可以連續調用append()方法
        buf.append("\n") ;                        // 添加一個轉義字符
        buf.append("數字 = ").append(1).append("\n") ;    // 添加數字
        buf.append("字符 = ").append('C').append("\n");     // 添加字符
        buf.append("布爾 = ").append(true) ;    // 添加布爾值
        System.out.println(buf) ;            // 直接輸出對象,調用toString()
    }
};
打印結果:
Hello World!!!
數字 = 1
字符 = C布爾 = true

StringBuffer字符串添加內容

public class StringBufferDemo03{    public static void main(String args[]){        StringBuffer buf = new StringBuffer() ;    // 聲明StringBuffer對象         buf.append("World!!") ;        // 添加內容        buf.insert(0,"Hello ") ;        // 在第一個內容之前添加內容        System.out.println(buf) ;        buf.insert(buf.length(),"偶my耶~") ;    // 在最後添加內容        System.out.println(buf) ;    }};
打印內容
Hello World!!
Hello World!!
偶my耶~
參考資料
  • 1.    於澤源, 張麗濱. JAVA中兩種有益的類——StringBuffer,Vector及它們在編輯器…[J]. 小型微型計算機系統, 1997(1).