本文主要是介绍StringBulider类的扩展机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
StringBuilder的扩容机制详解
StringBuilder是一个可变的字符序列,是字符串缓冲的一个类,和String一样是用来操作字符串的,不同的时候StringBuilder在操作字符串的时候效率比String高.主要体现在对字符串进行拼接的时候.所以我们在对字符串进行拼接的时候首选使用StringBuilder类.
今天主要给大家说一说有关StringBuilder类扩容的问题.
首先,我们从源码中可以看出,StringBuilder的底层使用的是byte数组来存储的(这个可以去找StringBuilder的父类AbstractStringBuilder类,该类中定义了byte[]类型的变量,用来接收StringBuilder添加的数据).该数组是在创建StringBuilder对象的时候进行初始化的,而且初始化的时候只能来确定数组的长度.
我们应该知道,数组一旦被创建完成,其长度是不可变的.那么该byte数组就有可能被内容填满,当填满之后再向里面添加内容怎么办呢?这就要考虑到如何让byte[]数组随着,内容的添加而不断的”改变其长度”.
在首次创建这个byte[]数组的时候,也不肯能将数组的长度定义的太大(考虑到资源浪费的问题):那到底有多长呢?有一个方法可以得到StringBuilder类的初始容量值:
int capacity()
返回当前容量。
该方法返回的是StringBuilder的当前容量值.
有上图可知,当我们创建一个空参的StringBuilder对象,返回的可容纳容量值是16个字符.扒开StringBuilde
这篇关于StringBulider类的扩展机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!