Java中的StringBuffer類

StringBuffer類概述

當我們對字符串進行拼接操作的時候,每次拼接,都會創建一個新的String對象,這樣的話既耗時又浪費空間。
而StringBuffer可以解決這個問題。
在這裏插入圖片描述
StringBuffer類是線程安全的可變字符序列,是一個類似於 String 的字符串緩衝區,但不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但通過某些方法調用可以改變該序列的長度和內容。
StringBuffer 上的主要操作是 append 和 insert 方法,可重載這些方法,以接受任意類型的數據。每個方法都能有效地將給定的數據轉換成字符串,然後將該字符串的字符添加或插入到字符串緩衝區中。append 方法始終將這些字符添加到緩衝區的末端;而 insert 方法則在指定的點添加字符。
每個字符串緩衝區都有一定的容量。只要字符串緩衝區所包含的字符序列的長度沒有超出此容量,就無需分配新的內部緩衝區數組。如果內部緩衝區溢出,則此容量自動增大。從 JDK 5 開始,爲該類補充了一個單個線程使用的等價類,即 StringBuilder。與該類相比,通常應該優先使用 StringBuilder 類,因爲它支持所有相同的操作,但由於它不執行同步,所以速度更快。

構造方法

StringBuffer類重載了構造方法,且含有空參構造。
在這裏插入圖片描述

StringBuffer的常用方法

capacity()方法
在這裏插入圖片描述
該方法獲取當前容量。理論值

length()方法
在這裏插入圖片描述
獲取長度即字符數。實際值

StringBuffer類的添加功能

append()方法

可以把任意類型數據添加到字符串緩衝區裏面,並返回字符串緩衝區本身。
在這裏插入圖片描述
上述方法是將String類型的數據添加到字符串緩衝區裏,然後返回字符串緩衝區本身。

insert()方法

在指定位置把任意類型的數據插入到字符串緩衝區裏面,並返回字符串緩衝區本身。

在這裏插入圖片描述
上述方法是在指定位置將String類型的數據插入到字符串緩衝區裏,並返回字符歘緩衝區本身。

StringBuffer類的刪除功能

deleteCharAt()方法
在這裏插入圖片描述
該方法刪除指定位置的字符,並返回本身。

delete()方法
在這裏插入圖片描述
該方法刪除從指定位置開始指定位置結束的內容,並返回本身。

StringBuffer類的替換和反轉功能

替換功能:
replace()方法
在這裏插入圖片描述
該方法是將從start開始到end的字符串用str替換,並返回本身。

反轉功能:
reverse()方法
在這裏插入圖片描述
該方法進行字符串的反轉,並返回本身。

StringBuffer的截取功能

substring()方法
在這裏插入圖片描述
從指定位置截取到末尾,返回值類型不再是StringBuffer本身,而是String類型。

在這裏插入圖片描述
從指定位置開始到結束位置進行截取,包括開始位置,不包括結束位置。返回值類型不再是StringBuffer本身,而是String類型。

StringBuffer和String的相互轉換

String到StringBuffer

  1. 通過構造方法
  2. 通過append()方法

StringBuffer到String

  1. 使用substring方法
  2. 通過構造方法
  3. 通過toString()方法

String和StringBuffer分別作爲參數傳遞

  • String作爲參數傳遞:String雖然是引用類型,但是它是一個常量,所以在做傳遞的時候,完全可以將其看成基本數據類型數據進行傳遞,即值傳遞。
  • StringBuffer作爲參數傳遞,是引用傳遞,形參的改變會影響實參。

StringBuffer和StringBuilder的區別

StringBuilder類是一個可變的字符序列。此類提供一個與 StringBuffer 兼容的 API,但不保證同步。該類被設計用作 StringBuffer 的一個簡易替換,用在字符串緩衝區被單個線程使用的時候(這種情況很普遍)。如果可能,建議優先採用該類,因爲在大多數實現中,它比 StringBuffer 要快。

將 StringBuilder 的實例用於多個線程是不安全的。如果需要這樣的同步,則建議使用 StringBuffer。

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