public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence
1 /**2 * A cache of the last value returned by toString. Cleared3 * 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 and11 * 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 the23 * specified string. The initial capacity of the string buffer is24 * { @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,依次类推。