|
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,执行速度更快。