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

原文地址:https://www.cnblogs.com/SQP51312/p/6116315.html