StringBuffer和StringBuilder,它们的底层char数组value默认的初始化容量是16,扩容只需要修改底层的char数组,两者的扩容最终都会调用到AbstractStringBuilder类相同的方法: 直入正题,扩容的步骤: 新的字符串的长度超过了底层原char数组value的大小,才需要进行扩容 先尝试默认扩容,将新容量变成 (value.length << 1) + 2 ,也就是两倍的原数组长度再加二 若默认扩充后的值还是小于至少容量的值,直接扩充到当前需要的至少容…