文章目录
- String
- StringBuilder
- StringBuffer
| String | StringBuilder | StringBuffer |
---|
可变性 | 不可变 | 可变 | 可变 |
线程安全 | 安全(天然不可变) | 不安全 | 安全(同步方法) |
性能 | 低(频繁操作生成新对象) | 高 | 中(同步开销) |
使用场景 | 少量固定字符串 | 单线程大量操作 | 多线程大量操作 |
String
- 特点:不可变(每次操作生成新对象),线程安全。
- 常用方法:
方法 | 说明 |
---|
length() | 返回字符串长度 |
charAt(int index) | 返回指定索引的字符 |
substring(int begin, int end) | 截取子串(含头不含尾) |
concat(String str) | 字符串拼接(返回新对象) |
equals(Object obj) | 比较内容是否相同 |
equalsIgnoreCase(String str) | 忽略大小写比较 |
indexOf(String str) | 返回子串首次出现的索引 |
lastIndexOf(String str) | 返回子串最后一次出现的索引 |
toLowerCase() / toUpperCase() | 大小写转换 |
trim() | 去除首尾空格 |
replace(char old, char new) | 替换字符 |
split(String regex) | 按正则分割为数组 |
matches(String regex) | 是否匹配正则表达式 |
valueOf(基本类型) | 将其他类型转为字符串 |
StringBuilder
- 特点:可变(直接修改原对象),性能高,非线程安全。
- 常用方法:
方法 | 说明 |
---|
append(任意类型) | 追加内容(支持链式调用) |
insert(int offset, 任意类型) | 在指定位置插入内容 |
delete(int start, int end) | 删除子串(含头不含尾) |
deleteCharAt(int index) | 删除指定索引的字符 |
replace(int start, int end, String str) | 替换子串 |
reverse() | 反转字符串 |
setCharAt(int index, char ch) | 修改指定索引的字符 |
length() / capacity() | 返回长度/当前容量 |
substring(int start, int end) | 截取子串(返回String) |
toString() | 转为String对象 |
StringBuffer
- 特点:可变(直接修改原对象),线程安全(方法用
synchronized
修饰),性能略低于StringBuilder
。 - 常用方法:
(与StringBuilder
完全一致,仅线程安全区别)
方法 | 说明 |
---|
append() / insert() / delete() | 同StringBuilder |
replace() / reverse() | 同StringBuilder |
length() / capacity() | 同StringBuilder |
substring() / toString() | 同StringBuilder |
ps
String s1 = "Hello";
s1.concat(" World");
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
StringBuffer sbf = new StringBuffer();
sbf.append("Hello").append(" World");