Java中的常用類:StringBuffer類

​ 在 Java 中,由於 String 類是 final 類型的,所以使用 String 定義的字符串是一個常量,它一旦創建,其內容和長度是不可改變的。如果需要對一個字符串修改,則只能創建新的字符串。爲了便於對字符串的修改,提供一個 StringBuffer類 (字符串緩衝區)來操作字符串。它們兩個最大的區別在於 StringBuffer類 的內容和長度是可以改變的。StringBuffer 好比是一個字符容器,當在其中添加或刪除字符時,所操作的都是這個字符容器,因此並不會產生新的 StringBuffer 對象。

StringBuffer 類提供了一系列的方法

StringBuffer append(char c)  添加字符到StringBuffer對象中末尾
StringBuffer insert(int offset, String str)  在StringBuffer對象中的offset位置插入字符串str
StringBuffer deleteCharAt(imt index)  移除StringBuffer對象中指定位置的字符
StringBuffer delete(int start, int end)  刪除StringBuffer對象中指定範圍的字符或字符串
StringBuffer replace(int start, int end, String s)  
將StringBuffer對象中指定範圍的字符或字符串用新的字符串s進行代替

-----------------------------------------------------------------------------------
    
void setCharAt(int index, char ch)  修改指定位置index處的字符
String toString()  獲得StringBuffer緩衝區的字符串對象
StringBuffer reverse()  將此StringBuffer對象用其反轉形式取代
package com.wang.demo;

public class StringBufferDemo1 {
    public static void main(String[] args) {
        System.out.println("1.添加-------------------------");
        add();
        System.out.println("2.修改-------------------------");
        update();
        System.out.println("3.刪除-------------------------");
        delete();
    }

    /**
     * 添加
     */
    public static void add() {
        //創建一個字符緩衝區
        StringBuffer stringBuffer = new StringBuffer();
        //添加字符串
        stringBuffer.append("ABC");
        System.out.println("append添加的結果是:" + stringBuffer);

        //在指定位置插入字符串
        stringBuffer.insert(3, "DE");
        System.out.println("insert添加的結果:" + stringBuffer);
    }

    /**
     * 修改
     */
    public static void update() {
        //創建一個字符緩衝區
        StringBuffer stringBuffer = new StringBuffer("ABAAA");
        //修改指定位置字符
        stringBuffer.setCharAt(2, 'C');
        System.out.println("修改指定位置字符結果:" + stringBuffer);

        //替換指定位置字符串或字符
        stringBuffer.replace(3, 5, "DE");
        System.out.println("替換指定位置字符(串)的結果:" + stringBuffer);

        //字符串翻轉
        System.out.println("字符串翻轉的結果:" + stringBuffer.reverse());
    }

    /**
     * 刪除
     */
    public static void delete() {
        StringBuffer stringBuffer = new StringBuffer("ABCDEFG");
        //指定範圍刪除
        stringBuffer.delete(3, 7);
        System.out.println("刪除指定範圍的結果:" + stringBuffer);

        //刪除指定位置
        stringBuffer.deleteCharAt(2);
        System.out.println("刪除指定位置的結果:" + stringBuffer);

        //清空緩衝區
        stringBuffer.delete(0, stringBuffer.length());
        System.out.println("清空緩衝區結果:" + stringBuffer);
    }
}
---------------------------------------------------------------------------------
    結果:
    	1.添加-------------------------
        append添加的結果是:ABC
        insert添加的結果:ABCDE
        2.修改-------------------------
        修改指定位置字符結果:ABCAA
        替換指定位置字符()的結果:ABCDE
        字符串翻轉的結果:EDCBA
        3.刪除-------------------------
        刪除指定範圍的結果:ABC
        刪除指定位置的結果:AB
        清空緩衝區結果:

append()insert() 方法有很多重載形式,它們都用於添加字符。不同的是,append() 方法始終將這些字符添加到緩衝區的末尾,而 insert() 方法則可以在指定的位置添加字符。delete() 方法用於刪除指定位置的字符,包含起始索引,不包含結束索引。

String 類StringBuffer 類 的對比歸納:

  1. String 類定義的字符串是常量,一旦創建後,內容和長度都是無法改變的。StringBuffer類表示字符容器,其內容和長度可以隨時修改。在操作字符串時,如果該字符串僅用於表示數據類型,則使用 String類即可,但如果需要對字符串中的字符進行增刪操作,則使用 StringBuffer 類。

  2. String 類重寫了 Object 類的 equals() 方法,而 StringBuffer 類沒有重寫 Object 類 的equals() 方法。

    String str1 = new String("abc");
    String str2 = new String("abc");
    System.out.println(str1.equals(str2));  //打印結果爲true
    
    StringBuffer s1 = new StringBuffer("abc");
    StringBuffer s2 = new StringBuffer("abc");
    System.out.println(s1.equals(s2));  //打印結果爲false
    
  3. String 類對象可以用連接符 + 進行連接,而 StringBuffer 對象之間不能。

    String str1 = "a";
    String str2 = "b";
    String str3 = str1 + str2;  //合法,使用 + 連接
    System.out.println(str3);  //打印輸出 ab
    
    StringBuffer s1 = new StringBuffer("a");
    StringBuffer s2 = new StringBuffer("b");
    StringBuffer s3 = s1 + s2;  //編譯出錯
    

補充:

除了使用 StringBuffer 外,JDK 1.5 之後提供了一個 StringBuilder 類同樣可以操作字符串。StringBuilder 與 StringBuffer 的功能相似,兩個類所提供的方法也基本相同。不同在於, StringBuffer 是線程安全的,而 StringBuilder 是線程不安全的,所以性能略高。通常情況下,如果創建一個內容可變的字符串對象,應該優先考慮 StringBuilder 類。 StringBuilder 類同樣提供了一系列添加(append),插入(insert),替換(replace)和刪除(delete)的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章