|
| 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,执行速度更快。
字符串操作详解
本文详细解析了String、StringBuffer与StringBuilder的特性与用法,包括它们的初始长度、可变性、线程安全性及扩容策略等内容,并对比了三者之间的区别。
9459

被折叠的 条评论
为什么被折叠?



