| String | StringBuffer | StringBuilder |
类型 | Char[] | String | string |
初始长度 | 0 | 16字符 | 16字符 |
是否可变 | 不可变 | 可变字符序列 | 可变字符序列 |
安全性 | 线程不安全 | 线程安全 | 线程不安全 |
扩容方案 | 无 | Str.len*2+2 | Str.len*2+2 |
说明:
1,StringBuffer和StringBulider扩容方案:
- 创建空的字符串,默认长度为16个字符
public StringBuffer() {
super(16);
}
- 创建字符串,长度为str.len+16
public StringBuffer(String str) {
super(str.length() + 16);
append(str);
}
- 扩容为当前字符空间长度*2+2
数组拷贝,影响性能。
2,String 需要注意的方法:
replace() | String是不可变的,replace返回一个新的String |
trim() | 去除字符串首、尾空白 |
3,StringBuffer和StringBulider需要注意的方法:
append() | 追加 |
Insert() | 添加任意点 |
Capacity() | 当前容量 |
setLength() | 设置字符序列长度 |
4,StringBuffer和StringBulider的区别
StringBuffer是线程安全的,因为它的每一个方法都加上了synchronized关键字
StringBulider是不安全的,在单线程环境下,推荐使用StringBuilder,执行速度更快。