简介
本文用示例介绍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;
扩容原理
待补充。
请先
!