官术网_书友最值得收藏!

6.2 StringBuffer類

String類處理的是不可變字符串,對其內容操作時,就會生成新的String對象。如果字符串進行大量的操作,其效率是非常低的。為了解決這一問題,可以使用StringBuffer或StringBuilder類來操作字符串,本節首先討論StringBuffer類的使用。

6.2.1 基本操作

當創建StringBuffer對象時,可以使用幾種構造函數,如指定初始內容、指定初始大小等。

下面的代碼創建一個StringBuffer對象,并顯示其字符數量。

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("abcdefg");
        System.out.println(sb.length());                // 7
    }

如果創建StringBuffer對象時并不確定其內容,可以指定其初始大小。當內容不超過這個大小時,就不需要重新分配內容,所以合理地設置初始大小對于StringBuffer對象的處理效率是有幫助的,如下面的代碼所示。

    StringBuffer sb = new StringBuffer(200);

6.2.2 添加內容

StringBuffer類中定義了一個系列append()方法的重載版本,用于將不同類型的數據追加到StringBuffer對象末尾,如下面的代碼所示。

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("abc");
        sb.append("defg");
        sb.append(123);
        sb.append(true);
        System.out.println(sb);
    }

代碼執行結果如圖6-6所示。

如果需要將內容插入指定的位置,可以使用insert()方法,如下面的代碼所示。

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("abcdefg");
        sb.insert(3,"***");
        System.out.println(sb);
    }

代碼執行結果如圖6-7所示。

圖6-6 向StringBuffer對象末尾追加內容

圖6-7 在StringBuffer對象中插入內容

實際上,insert()方法也包括一系列的重載版本,可以將不同類型的數據插入指定的位置。其參數也很簡單,第一個參數指定插入位置的索引值,第二個參數指定需要插入的內容。

6.2.3 刪除內容

當刪除指定位置的字符時,使用deleteCharAt()方法,其參數指定待刪除字符的索引值。

此外,使用delete()方法,還可以刪除指定范圍的內容,如下面的代碼所示。

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("abcdefg");
        sb.delete(3,6);
        System.out.println(sb);                         // abcg
    }

delete()方法中,第一個參數指定開始刪除的索引位置,第二個參數的設置同樣可以參考如下規則,當執行delete(i, n)操作時,會刪除從i開始的n-i個字符。

6.2.4 查詢

定義一個StringBuffer對象后,可以通過以下一些方法獲取其內容。

□ charAt()方法,獲取指定索引位置的字符。

□ substring()方法,獲取指定范圍的字符串。

□ indexOf()方法,找到參數指定的內容,并返回第一次出現的索引位置,沒有找到則返回-1。

□ lastIndexOf()方法,找到參數指定的內容,并返回最后一次出現的索引位置,沒有找到則返回-1。

這些個方法與String類的同名方法有相同的參數,可以參考使用。

6.2.5 替換

當替換StringBuffder對象的內容時,可以使用replace()方法,它包括三個參數。

□ 第一個參數,指定開始替換的索引值。

□ 第二個參數,指定替換結束位置的后一個索引位置。

□ 第三個參數,指定替換內容。

下面的代碼演示了replace()方法的使用。

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("abcdefg");
        sb.replace(3,6,"***");
        System.out.println(sb);
    }

代碼執行結果如圖6-8所示。

在使用replace()方法時,可以參考以下規則,即s1.replace(i, n, s2)語句會將s1字符串中從i開始的n-i個字符替換為s2的內容。

圖6-8 替換StringBuffer對象的內容

6.2.6 反向排列

使用reserve()方法,可以將StringBuffer對象中的內容反向排列,如下面的代碼所示。

    public static void main(String[] args) {
    StringBuffer sb = new StringBuffer("abcdefg");
        sb.reverse();
        System.out.println(sb);
    }

代碼執行結果如圖6-9所示。

圖6-9 反向排列StringBuffer對象的內容

主站蜘蛛池模板: 六枝特区| 堆龙德庆县| 乌拉特后旗| 毕节市| 东乌珠穆沁旗| 井研县| 罗定市| 社会| 大庆市| 凤翔县| 安达市| 莱芜市| 新巴尔虎右旗| 海城市| 麻城市| 丹巴县| 云林县| 衡水市| 裕民县| 沁源县| 泽州县| 二手房| 赣州市| 临澧县| 栾川县| 莱州市| 黄浦区| 崇仁县| 梓潼县| 临湘市| 延吉市| 黔东| 海南省| 怀宁县| 讷河市| 施甸县| 利辛县| 营口市| 茌平县| 清河县| 颍上县|