JDK源碼閱讀--StringBuffer

 

 

public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence


1 /**
2  * A cache of the last value returned by toString. Cleared 3  * whenever the StringBuffer is modified. 4      */
5     private transient char[] toStringCache;//被transient修飾,表示這個字段不被序列化



StringBuffer是被final修飾的,表示不能被其它類繼承,;繼承了AbstractStringBuilder抽象類,實現了Serializable、CharSequence接口

StringBuffer中的方法被public修飾的都使用了synchronized,保證線程安全。因此StringBuffer是線程安全的類。

 

 1 /**
 2      * Constructs a string buffer with no characters in it and an
 3      * initial capacity of 16 characters.
 4      */
 5     public StringBuffer() {
 6         super(16);
 7     }
 8 
 9     /**
10      * Constructs a string buffer with no characters in it and
11      * the specified initial capacity.
12      *
13      * @param      capacity  the initial capacity.
14      * @exception  NegativeArraySizeException  if the {@code capacity}
15      *               argument is less than {@code 0}.
16      */
17     public StringBuffer(int capacity) {
18         super(capacity);
19     }
20 
21     /**
22      * Constructs a string buffer initialized to the contents of the
23      * specified string. The initial capacity of the string buffer is
24      * {@code 16} plus the length of the string argument.
25      *
26      * @param   str   the initial contents of the buffer.
27      */
28     public StringBuffer(String str) {
29         super(str.length() + 16);
30         append(str);
31     }

 

StringBuffer的容量默認是16,當容量不夠的時候,容量會繼續增長16,依次類推。java

相關文章
相關標籤/搜索