一、StringBuilder的容量capacity
1、StringBuilder是非线程安全的;
2、StringBuilder容量默认为16,追加数据时,如果容量不够,则每次2倍 +2 扩容;
比如追加字符长度 <= 16时,容量为16;
比如追加字符长度 > 16时,容量为16 * 2 + 2;
3、查看其底层源码可知,其底层实际使用的是字符数组,每次扩容,调用的是Arrays.copyOf()方法,
StringBuilder的容量Capacity变化规则为:
初始值 (原容量 < 总内容 <= 2 * 原容量 + 2) (总内容 > 2 * 原容量 + 2)
16 2 * 原容量 + 2 内容总长度
4、建议每次创建StringBuilder对象的时候,指定初始容量
网友评论