疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java之StringBuffer类详解


 

 
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类详解