Java記錄 -29- StringBuffer
StringBufferString是一個常量final的,建立了不能追加。因此大量使用String時會建立大量的對象,為了避免過多建立對象,有了StringBuffer,StringBuffer類似於String的字串緩衝區,但能修改。當多個字串進行拼接時,只會產生一個StringBuffer對象。其重要方法append()返回其原有對象的引用,並可以將任何原生類型追加進去,並轉換為字串。使用執行個體:StringBuffer sb = new StringBuffer();sb.append(“hello”).append(“ world”).append(“ welcome”).append(100).append(false).String s = sb.toString(); java.lang.StringBufferpublic final class StringBuffer extends Object implements Serializable, CharSequence安全執行緒的可變字元序列。一個類似於 String 的字串緩衝區,但能修改。雖然在任意時間點上它都包含某種特定的字元序列,但通過某些方法調用可以改變該序列的長度和內容。 可將字串緩衝區安全地用於多個線程。可以在必要時對這些方法進行同步,因此任意特定執行個體上的所有操作就好像是以串列順序發生的,該順序與所涉及的每個線程進行的方法調用順序一致。 StringBuffer 上的主要操作是 append 和 insert 方法,可重載這些方法,以接受任意類型的資料。每個方法都能有效地將給定的資料轉換成字串,然後將該字串的字元追加或插入到字串緩衝區中。append 方法始終將這些字元添加到緩衝區的末端;而 insert 方法則在指定的點添加字元。 例如,如果 z 引用一個當前內容為 "start" 的字串緩衝區對象,則此方法調用 z.append("le") 會使字串緩衝區包含 "startle",而 z.insert(4, "le") 將更改字串緩衝區,使之包含 "starlet"。 通常,如果 sb 引用 StringBuilder 的一個執行個體,則 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。 當發生與源序列有關的操作(如源序列中的追加或插入操作)時,該類只在執行此操作的字串緩衝區上而不是在源上實現同步。 每個字串緩衝區都有一定的容量。只要字串緩衝區所包含的字元序列的長度沒有超出此容量,就無需分配新的內部緩衝區數組。如果內部緩衝區溢位,則此容量自動增大。從 JDK 5 開始,為該類補充了一個單個線程使用的等價類別,即 StringBuilder。與該類相比,通常應該優先使用 StringBuilder 類,因為它支援所有相同的操作,但由於它不執行同步,所以速度更快。
下一篇:http://www.bkjia.com/kf/201510/447807.html