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 }
更多内容详见: