StringBuffer
線程安全的可變字符序列。
StringBuffer源碼分析(JDK1.6):
public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence
StringBuffer類被final修飾,可知StringBuffer類不能被繼承。
StringBuffer中的大部分方法都有synchronized修飾。有些雖然沒有synchronized修飾,但是通過調用實現同步。因此StringBuffer是線程安全的。
StringBuffer中的大部分方法都是直接調用的AbstractStringBuilder類中的方法。AbstractStringBuilder類詳見java之AbstractStringBuilder類詳解。
構造器
1、構造一個沒有字符的字符串緩沖區,默認初始容量為16。
public StringBuffer() { super(16); }
2、構造一個沒有字符的字符串緩沖區,並指定初始容量。
public StringBuffer(int capacity) { super(capacity); }
3、構造一個字符串緩沖區,並初始化為指定的字符串。初始容量為16加上字符串參數的長度。
public StringBuffer(String str) { super(str.length() + 16); append(str); }
4、與上個構造器類似。
public StringBuffer(CharSequence seq) { this(seq.length() + 16); append(seq); }
測試:
public static void main(String[] args) { // 使用無參構造器 StringBuffer s1 = new StringBuffer(); System.out.println(s1.length());// 0 System.out.println(s1.capacity());// 16 // 指定容量 StringBuffer s2 = new StringBuffer(10); System.out.println(s2.capacity());// 10 // 初始化為指定的字符串 StringBuffer s3 = new StringBuffer("abc"); System.out.println(s3.capacity());// 19 System.out.println(s3);// abc }
更多內容詳見:
java之AbstractStringBuilder類詳解
java之StringBuilder類詳解