StringBulider类的扩展机制

本文详细介绍了StringBuilder类的扩容机制。StringBuilder作为字符串操作的高效工具,其底层使用byte数组存储数据。初始容量为16个字符,当内容超出容量时,遵循新长度=旧长度*2+2的扩容规则。不同构造方法可设定初始容量,但扩容机制保持一致。
摘要由CSDN通过智能技术生成

StringBuilder的扩容机制详解

StringBuilder是一个可变的字符序列,是字符串缓冲的一个类,和String一样是用来操作字符串的,不同的时候StringBuilder在操作字符串的时候效率比String高.主要体现在对字符串进行拼接的时候.所以我们在对字符串进行拼接的时候首选使用StringBuilder类.

今天主要给大家说一说有关StringBuilder类扩容的问题.

首先,我们从源码中可以看出,StringBuilder的底层使用的是byte数组来存储的(这个可以去找StringBuilder的父类AbstractStringBuilder类,该类中定义了byte[]类型的变量,用来接收StringBuilder添加的数据).该数组是在创建StringBuilder对象的时候进行初始化的,而且初始化的时候只能来确定数组的长度.

我们应该知道,数组一旦被创建完成,其长度是不可变的.那么该byte数组就有可能被内容填满,当填满之后再向里面添加内容怎么办呢?这就要考虑到如何让byte[]数组随着,内容的添加而不断的”改变其长度”.

在首次创建这个byte[]数组的时候,也不肯能将数组的长度定义的太大(考虑到资源浪费的问题):那到底有多长呢?有一个方法可以得到StringBuilder类的初始容量值:


int capacity()
​ 返回当前容量。


该方法返回的是StringBuilder的当前容量值.

![](media/image1.png){width="5.759722222222222in" height="1.525in"}

有上图可知,当我们创建一个空参的StringBuilder对象,返回的可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值