StringBuffer的扩容机制中为什么是*2+2?
StringBuffer的扩容机制中为什么是*2+2?
在我们对StringBuffer的源码进行分析的时候。我们可以看到。
StringBuffer进行append时,方法是这样的,其中的synchronized正说明了其实线程安全的。
先判断添加的字符串是不是空,若为空就执行appendNull方法,不为空的话就计算添加的字符串长度,count是当前的stringBuffer对象的长度,然后进行扩容,最后将原有的内容复制到新的stringBuffer中,并且更新stringBuffer的长度。下面我们看一如何创建新的stringBuffer 的。
传递的参数是最小容量,就是原有长度+新增长度,判断一下是否超出范围,如果超出,就先new一个容量,在复制原有字符。
private