所有分类
  • 所有分类
  • 未分类

Java之String-StringBuffer的原理

简介

本文用示例介绍Java的StringBuffer的原理。

类继承结构

可修改的原理

代码实例

例程

package org.example.a;

public class Demo{
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer("aa");
        stringBuffer.append("bbb");
        System.out.println(stringBuffer);
    }
}

执行结果

aabbb 

源码剖析

此源码分析虽然只分析了构造函数,实际上也包含了append方法。

StringBuffer stringBuffer = new StringBuffer(“aa”);
    // 传进来参数名为str
    super(str.length() + 16);                                            //StringBuffer.java
        AbstractStringBuilder(str.length() + 16)        //AbstractStringBuilder.java
            // value是全局变量。(一个数组)
            value = new char[capacity];                                //AbstractStringBuilder.java
    append(str)                                                                        //StringBuffer.java
        toStringCache = null;
        super.append(str);                                                    //调用到AbstractStringBuilder.java里
            if (str == null)
                  return appendNull();
            int len = str.length();
            // 确定容量是否充足,不充足则扩容。count是全局变量
            ensureCapacityInternal(count + len);
            str.getChars(0, len, value, count);                //String.java
                // 参数名依次为:srcBegin,srcEnd,dst[],dstBegin
                // 本处value为String.java的全局变量(一个数组)。(String的值)
                System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd – srcBegin);
            count += len;
            return this;

扩容原理

待补充。

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录