JDK1.8源码阅读记录lang包StringBuffer类、StringBuilder类

JDK1.8源码阅读记录

JAVA.LANG包

StringBuffer类

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

StringBuffer继承AbstractStringBuilder,实现SerializableCharSequenceSerializable是可以序列化的标志,CharSequence接口包含了charAt()、length() 、subSequence()、toString()这几个方法,而AbstractStringBuilder则是StringBuffer主要功能的来源。
final修饰类,表示该类不能被继承。

变量
	private transient char[] toStringCache;//用来缓存toString()方法返回的最近一次的value数组中的字符。当修改StringBuffer对象时会被清除。
	static final long serialVersionUID = 3388685877147921107L;//序列化ID,当序列化与反序列化时用到,作为对象识别的认证。
	//来自父类AbstractStringBuilder的变量
	char[] value;//用来存储字符序列中的字符。value是一个动态的数组,当存储容量不足时,会对它进行扩容。
	int count;//表示value数组中已存储的字符数。
构造方法
    public StringBuffer() {
   
        super(16);
    }
    public StringBuffer(int capacity) {
   
        super(capacity);
    }
    public StringBuffer(String str) {
   
        super(str.length() + 16);
        append(str);
    }
    public StringBuffer(CharSequence seq) {
   
        this(seq.length() + 16);
        append(seq);
    }
	// AbstractStringBuilder.java
	AbstractStringBuilder(int capacity) {
   
    	value = new char[capacity];
	}

StringBuffer类提供了4个构造方法,主要是对value数组的初始化。

  • 无参构造,初始化容量为16个字符;
  • capacity,初始化容量为capacity个字符;
  • String str,初始化容量为str.length()+16个字符,并把str的字符添加到value数组中;
  • CharSequence seq,初始化容量为str.length()+16个字符,并把seq的字符添加到value数组中;
常用方法
	@Override
    public synchronized int length() {
   
        return count;
    }

    @Override
    public synchronized int capacity() {
   
        return value.length;
    }


    @Override
    public synchronized void ensureCapacity(int minimumCapacity) {
   
        super.ensureCapacity(minimumCapacity);
    }
    @Override
    public synchronized void trimToSize() {
   
        super.trimToSize();
    }
    @Override
    public synchronized void setLength(int newLength) {
   
        toStringCache = null;
        super.setLength(newLength);
    }
    @Override
    public synchronized 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值