简介
本文用示例介绍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;