String、StringBuffer、StringBuilder對比,stringbuffer

來源:互聯網
上載者:User

String、StringBuffer、StringBuilder對比,stringbuffer

1、String

用於存放字元的數組被聲明為final的,因此只能賦值一次,不可再更改。這就導致每次對String的操作都會產生新的String對象,不僅效率低下,而且大量浪費有限的記憶體空間。

String a ="a"; //假設a指向地址0x0001

a ="b";//重新賦值後a指向地址0x0002,但0x0001地址中儲存的"a"依舊存在,但已經不再是a所指向的,a 已經指向了其它地址。

因此String的操作都是改變賦值地址而不是改變值操作。對String對象的任何改變都不影響到原對象,相關的任何change操作都會產生新的對象

2、StringBuffer

StringBuffer是一個從JDK1.0開始就存在的類,它就像String類一樣,不過其內部成員是可以修改的。

StringBuffer是可變類,和安全執行緒的字串操作類,任何對它指向的字串的操作都不會產生新的對象。每個StringBuffer對象都有一定的緩衝區容量,當字串大小沒有超過容量時,不會分配新的容量,當字串大小超過容量時,會自動增加容量。

StringBuffer 上的主要操作是append 和 insert 方法,可重載這些方法,以接受任意類型的資料。每個方法都能有效地將給定的資料轉換成字串,然後將該字串的字元追加或插入到字串緩衝區中。append 方法始終將這些字元添加到緩衝區的末端;而 insert 方法則在指定的點添加字元。例如,如果 z 引用一個當前內容是“start”的字串緩衝區對象,則此方法調用 z.append("le") 會使字串緩衝區包含“startle”,而z.insert(4, "le") 將更改字串緩衝區,使之包含“starlet”。

3、StringBuilder

StringBuilder是一個可變的字元序列,是JDK5.0新增的。此類提供一個與StringBuffer 相容的 API,但不保證同步。該類被設計用作StringBuffer 的一個簡易替換,用在字串緩衝區被單個線程使用的時候(這種情況很普遍)。

它和StringBuffer提供相同的介面。

相同點:它們繼承相同的父類:Abstract StringBuilder

它們實現相同的介面:java.io.Serializable, CharSequence

它們基本上對外提供相同的方法

不同點:StringBuffer類是安全執行緒的,所有StringBuffer提供的public方法基本上都是synchronized。StringBuilder類不是安全執行緒的,它的方法沒有被synchronized鎖修飾。相比而言,StringBuilder類會略微快一點

4、總結

如果要操作少量的資料用 String

單線程操作字串緩衝區下操作大量資料用StringBuilder

多線程操作字串緩衝區下操作大量資料用StringBuffer

如果一個字串變數是在方法裡面定義的,這種情況可能只有一個線程訪問它,不存在不安全的因素,則用StringBuilder,如果要在類裡面定義成員變數,並且這個類的執行個體對象會在多線程環境下使用那麼最好使用StringBuffer

String是不可變的對象, 因此在每次對String 類型進行改變的時候,都會產生一個新的 String 對象,然後將指標指向新的 String 對象,所以經常改變內容的字串最好不要用 String ,因為每次產生對象都會對系統效能產生影響,特別當記憶體中無引用對象多了以後, JVM 的 GC 就會開始工作,效能就會降低。

不要使用String類的"+"來進行頻繁的拼接,因為那樣的效能極差的,應該使用StringBuffer或StringBuilder類,這在Java的最佳化上是一條比較重要的原則。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.