JavaSE入門學習之Java常用類之StringBuffer類和StringBuilder類

來源:互聯網
上載者:User

JavaSE入門學習之Java常用類之StringBuffer類和StringBuilder類
一StringBuilder類(1)認識StringBuilder類

在Java中,除了可以使用String類來儲存字串,還可以使用StringBuilder類或StringBuffer類儲存字串,在需

要頻繁對字串進行修改操作時使用StringBuilder的效率比String要高。

String 類具有是不可變性。如:

運行結果:

從運行結果中我們可以看到,程式運行時會額外建立一個對象,儲存 "helloworld"。當頻繁操作字串時,就會額

外產生很多臨時變數。使用StringBuilder或StringBuffer就可以避免這個問題。至於StringBuilder和StringBuffer,它們

基本相似,不同之處,StringBuffer是安全執行緒的,而StringBuilder則沒有實現安全執行緒功能,所以效能略高。因此一

般情況下,如果需要建立一個內容可變的字串對象,應優先考慮使用StringBuilder 類。

定義和建立StringBuilder類的執行個體代碼:

運行結果: imooc

(2)StringBuilder類的常用方法

StringBuilder類提供了很多方法來操作字串:

例如:在下面的範例程式碼中,建立了StringBuilder對象,用來儲存字串,並對其做了追加和插入操作。這些操

作修改了str對象的值,而沒有建立新的對象,這就是StringBuilder和 String最大的區別。

執行個體代碼:

運行結果:

瞭解了StringBuilder類,我們來嘗試完成下面的功能。

功能:將一個由英文字母組成的字串轉換成指定格式---從右邊開始每三個字母用逗號分隔的形式。

執行個體代碼:
public class Test {    public static void main(String[] args) {//建立一個空的StringBuilder對象StringBuilder str=new StringBuilder();//追加字串str.append("jaewkjldfxmopzdm");        //從後往前每隔三位插入逗號for(int i=str.length()-3;i>0;i=i-3){        str.insert(i,",");}             //將StringBuilder對象轉換為String對象並輸出System.out.print(str.toString());    }}

運行結果:

二StringBuffer類(1)認識StringBuffer類

java.lang.StringBuffer代表可變的字元序列。StringBuffer和String類似,但StringBuffer可以對其字串進行改

變。

(2)StringBuffer類的常見構造方法:

StringBuffer()

建立一個不包含字元序列的"空"的StringBuffer對象。

StringBuffer(String str)

建立一個StringBuffer對象,包含與String對象str相同的字元序列。

執行個體代碼:

 

public class Test{    public static void main(String args[]){StringBuffer sBuffer = new StringBuffer("test");        sBuffer.append(" String Buffer");        System.out.println(sBuffer);     }}

 

運行結果:

(3)StringBuffer類常用方法

1)重載方法public StringBuffer append(...)可以為該StringBuffer對象添加字元序列,返回添加後的StringBuffer對

象引用,例如:

2)重載方法public StringBuffer insert(...)可以為該StringBuffer對象在指定位置插入字元序列。返回修改後的該

StringBuffer對象引用,例如:

3)方法public StringBuffer delete(int start,int end)可以刪除從start開始到end-1為止的一段字元序列,返回修改後

的該StringBuffer對象引用。

4)和String類含義類似的方法:

5)方法public StringBuffer reverse()用於將字元序列逆序,返回修改後的該StringBuffer對象引用。

執行個體代碼:

 

public class Test{    public static void main(String[] args){String s = "Mircosoft";char[] a = {'a','b','c'};StringBuffer sb1 = new StringBuffer(s);sb1.append('/').append("IBM").append('/').append("Sun");System.out.println(sb1);StringBuffer sb2 = new StringBuffer("數字");for(int i=0;i<=9;i++){    sb2.append(i);}System.out.println(sb2);sb2.delete(8,sb2.length()).insert(0,a);System.out.println(sb2);System.out.println(sb2.reverse());    }}         

 

編譯運行結果:

三StringBuffer類和StringBuilder類

當對字串進行修改的時候,需要使用StringBuffer和StringBuilder類。和String類不同的是,StringBuffer和

StringBuilder類的對象能夠被多次的修改,並且不產生新的未使用對象。StringBuilder類在Java 5中被提出,它和

StringBuffer之間的最大不同在於StringBuilder的方法不是安全執行緒的(不能同步訪問)。由於StringBuilder相較於

StringBuffer有速度優勢,所以多數情況下建議使用StringBuilder類。然而在應用程式要求安全執行緒的情況下,則必須

使用StringBuffer類。

StringBuffer類支援的主要方法:

 

和String類的方法類似:

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.