String 内容不可变,每次拼接会产新的字符串。
StringBuilder 内容可变,操作完成后再转换成 String
字符串拼优先用 StringBuilder ,而不是 String (但是如果是 字符串常量 相加,编译器会在编译阶段直接优化为最终结果)
Constructor
1 | StringBuilder() // 空白 |
method
StringBuilder append(任意类型)
添加数据,返回对象本身
StringBuilder reverse()
反转容器中的内容
int length()
字符长度(字符出现个数)
Implementing CharSequence:toString()
扩容原理
默认容量:16,长度:0
默认扩容机制:扩充的容量=老容量*2+2
如果添加的新长度超过了 默认扩充容量 ,则以 实际需要容量 为准,扩充到刚好需要的容量
源码
默认创建一个长度为16的字节数组
添加内容长度小于16,直接存
添加内容大雨16会扩容(原来的容量*2+2)
如果扩容之后还不够,以实际长度为准
method2
int capacity()
容量