StringBuilder源码

本文从实例化StringBuilder开始,逐步剖析其内部工作原理。首先介绍构造函数如何调用AbstractStringBuilder,并进行初始容量设定。接着详细阐述append方法的实现,包括如何通过super.append(str)进行字符串拼接,以及在拼接过程中如何调用appendNull、ensureCapacityInternal和newCapacity等方法进行动态扩容。在扩容策略中,重点解释了不同情况下容量如何调整,以确保内存效率和防止溢出。最后提到了System.arraycopy()方法在复制字符数组时的浅拷贝特性。
摘要由CSDN通过智能技术生成

1.从实例化StringBuilder入手:

StringBuilder stringBuilder = new StringBuilder("sldf");

2.进入new StringBuilder(“sldf”)内

public StringBuilder(String str) {
   
    super(str.length() + 16); //调用父类的构造方法,进行初始容量设置
    append(str); //append方法添加字符串
}

3.首先进入 super(str.length() + 16)内,这是个类是AbstractStringBuilder是一个抽象类:

/**
* The value is used for character storage.
*/
char[] value; //StringBuilder内没有存储字符串的字符数组,依靠的是父类AbstractStringBuilder进行存储

AbstractStringBuilder(int capacity) {
   
    value = new char[capacity]; //创建一个字符数组,进行初始容量设置,并指定容量为字符串长度      
}

4.在第2步中进入append(str)内:

@Override
public StringBuilder append(String str) {
   
    super.append(str); //调用父类AbstractStringBuilder构造方法进行字符串添加
    return this; //返回本StringBuilder对象
}

5.进入super.append(str)内:

/**
* The count is the number of characters used.
*/
int count; //现在已有的字符串长度数


public AbstractStringBuilder append(String str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值