1. 程式人生 > >java基礎--StringBuffer類常用方法以及案例

java基礎--StringBuffer類常用方法以及案例

StringBuffer類概述

我們如果對字串進行拼接操作,每次拼接,都會構建一個新的String物件,既耗時,又浪費空間。而StringBuffer就可以解決這個問題
執行緒安全的可變字元序列

StringBuffer和String的區別?

簡單地說,就是一個變數和常量的關係
StringBuffer物件的內容可以修改;而String物件一旦產生後就不可以被修改,重新賦值其實是兩個物件。

StringBuffer的內部實現方式和String不同,StringBuffer在進行字串處理時,不生成新的物件,在記憶體使用上要優於String類。所以在實際使用時,如果經常需要對一個字串進行修改,例如插入、刪除等操作,使用StringBuffer要更加適合一些。
String

:在String類中沒有用來改變已有字串中的某個字元的方法,由於不能改變一個Java字串中的某個單獨字元,所以在JDK文件中稱String類的物件是不可改變的。然而,不可改變的字串具有一個很大的優點:編譯器可以把字串設為共享的。
StringBuffer:StringBuffer類屬於一種輔助類,可預先分配指定長度的記憶體塊建立一個字串緩衝區。
這樣使用StringBuffer類的append方法追加字元 比 String使用 + 操作符新增字元 到 一個已經存在的字串後面有效率得多。因為使用 + 操作符每一次將字元新增到一個字串中去時,字串物件都需要尋找一個新的記憶體空間來容納更大的字串,這無凝是一個非常消耗時間的操作。新增多個字元也就意味著要一次又一次的對字串重新分配記憶體。使用StringBuffer類就避免了這個問題。

構造方法

public StringBuffer()
public StringBuffer(int capacity)
public StringBuffer(String str)

新增功能

public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)

刪除功能

public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)

替換功能

public StringBuffer replace(int start,int end,String str)

反轉功能

public StringBuffer reverse()

擷取功能

public String substring(int start)
public String substring(int start,int end)
擷取功能和前面幾個功能的不同
返回值型別是String型別,本身沒有發生改變

StringBuffer類練習

1. String和StringBuffer的相互轉換

1.1 String –> StringBuffer

  方式1. 通過構造方法

  方式2:通過append方法

1.2 StringBuffer –> String

  方式1:通過構造方法

  方式2:通過toString方法

2.把陣列拼接成一個字串(用for迴圈)

String: 使用+=進行字串拼接
StringBuffer:使用append方法進行拼接

3.把字串反轉

String:對其進行逆序遍歷
StringBuffer:對其直接呼叫reverse方法,然後toString進行輸出

4.判斷一個字串是否是對稱字串

例如”abc”不是對稱字串,”aba”、”abba”、”aaa”、”mnanm”是對稱字串

String:首尾各設一枚指標,迴圈次數為s.length/2,然後對其元素進行比較
StringBuffer: reverse().toString().equals(s) 一步搞定!

StringBuffer類面試題

通過檢視API瞭解一下StringBuilder類
String,StringBuffer,StringBuilder的區別
StringBuffer和陣列的區別
看程式寫結果:
String作為引數傳遞
StringBuffer作為引數傳遞