String、StringBuilder、StringBuffer

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   strong   資料   art   

String                                                                                       

String的值是不可變的,這就導致每次對String的操作都會產生新的String對象,不僅效率低下,而且大量浪費有限的記憶體空間。

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

因此String的操作都是改變賦值地址而不是改變值操作。

所以經常改變內容的字串最好不要用 String ,因為每次產生對象都會對系統效能產生影響,特別當記憶體中無引用對象多了以後, JVM 的 GC 就會開始工作,那速度是一定會相當慢的。

StringBuffer                                                                            

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

StringBuffer buf=new StringBuffer(); //分配長16位元組的字元緩衝區 StringBuffer buf=new StringBuffer(512); //分配長512位元組的字元緩衝區 StringBuffer buf=new StringBuffer("this is a test")//在緩衝區中存放了字串,並在後面預留了16位元組的空緩衝區。

可將字串緩衝區安全地用於多個線程。可以在必要時對這些方法進行同步,因此任意特定執行個體上的所有操作就好像是以串列順序發生的,該順序與所涉及的每個線程進行的方法調用順序一致。
      StringBuffer 上的主要操作是 appendinsert 方法,可重載這些方法,以接受任意類型的資料。每個方法都能有效地將給定的資料轉換成字串,然後將該字串的字元追加或插入到字串緩衝區中。append 方法始終將這些字元添加到緩衝區的末端;而 insert 方法則在指定的點添加字元。

StringBuilder                                                                          

StringBuilder一個可變的字元序列是5.0新增的,StringBuffer和StringBuilder類功能基本相似,主要區別在於StringBuffer類的方法是多線程、安全的,而StringBuilder不是安全執行緒的,相比而言,在單線程的情況下,StringBuilder類會略微快一點。對於經常要改變值的字串應該使用StringBuffer和StringBuilder類。

安全執行緒                                                                                     

StringBuffer 安全執行緒
      StringBuilder 線程不安全

速度                                                                                           

一般情況下,速度從快到慢:StringBuilder>StringBuffer>String,這種比較是相對的,不是絕對的。

總結                                                                                              

(1).如果要操作少量的資料用 = String

(2).單線程操作字串緩衝區 下操作大量資料 = StringBuilder

(3).多線程操作字串緩衝區 下操作大量資料 = StringBuffer

我是天王蓋地虎的分割線                                                                

 

 

參考:http://blog.csdn.net/fmh2011/article/details/18981455

聯繫我們

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