首頁  >  文章  >  Java  >  String、StringBuffer、StringBulider三者介紹

String、StringBuffer、StringBulider三者介紹

零下一度
零下一度原創
2017-06-23 09:32:291461瀏覽

三者都實作了CharSequence接口,因此CharSequence可認為是一個字串的協定介面

1.String類別是不可變類,即一旦一個String物件被創建後,包含在這個對象中的字元序列是不可改變的,直到這個物件被銷毀;

我們常常定義的時候 String str=new String("定義了我");

str=「改變了我」;

輸出是改變了我,好像是Str已經改變了,其實是改變了str的指向,原來堆記憶體裡的物件成為了垃圾

2.StringBuffer類別

 StringBuffer代表一個字元序列可變的字串,當一個StringBuffer建立以後,透過inser()、appen()、reverse()、serChaAt()、setLength()方法可以改變這個字串,最終生成以後,可以透過toString()方法轉換成一個String物件

3.StringBuilder是JDK1.5新增的,也代表字串對象,和StringBuffer相似,兩個類別的建構器和方法也基本上相同,當時StringBuffer是線程安全的,StringBulider沒有實現線程安全,所以效能略高。因此,如果建立一個字元可變的字串對象,則應該優先考慮StringBuilder類別

比較

#1.執行速度方面三者有如下關係: 
StringBuilder>StringBuffer> String;

2.:一、長度都是可擴充的;二、StringBuffer是線程安全的,StringBuilder是線程不安全的。那麼他們的長度是如何實現動態擴充以及StringBuffer的線程安全是如何實現的呢?

三者都實作了CharSequence接口,因此CharSequence可認為是一個字串的協定介面

StringBuffer裡面所有的方法除了建構方法以外都由synchronized限定

它們兩個可擴展長度則是透過ensureCapacity(int minimumCapacity)來驗證目前長度是否小於參數minimumCapacity,如果成立則進行分配空間。分配新空間的步長為(目前長度+1)的兩倍。

 

以上是String、StringBuffer、StringBulider三者介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn