0
点赞
收藏
分享

微信扫一扫

Java--StringBuffer的原理


简介

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

类继承结构

Java--StringBuffer的原理_java

可修改的原理

代码实例

例程

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 条评论