StringBuilder

String 内容不可变,每次拼接会产新的字符串。
StringBuilder 内容可变,操作完成后再转换成 String

字符串拼优先用 StringBuilder ,而不是 String (但是如果是 字符串常量 相加,编译器会在编译阶段直接优化为最终结果)

Constructor

1
2
3
4
StringBuilder() // 空白
StringBuilder​(int capacity) // 空的,指定了容器的初始长度
StringBuilder​(String str)
StringBuilder​(CharSequence seq) // 字符序列,String实现了这个接口

method

StringBuilder append​(任意类型) 添加数据,返回对象本身

StringBuilder reverse() 反转容器中的内容

int length() 字符长度(字符出现个数)

Implementing CharSequence:
toString()

扩容原理

默认容量:16,长度:0

默认扩容机制:扩充的容量=老容量*2+2

如果添加的新长度超过了 默认扩充容量 ,则以 实际需要容量 为准,扩充到刚好需要的容量

源码

默认创建一个长度为16的字节数组

添加内容长度小于16,直接存

添加内容大雨16会扩容(原来的容量*2+2)

如果扩容之后还不够,以实际长度为准

method2

int capacity() 容量