StringBuilder(重点)
结构关系图

基本介绍
(1)StringBuilder 是一个可变的字符串序列,且是线程不安全的(没有做互斥处理,没有 synchronized 关键字)
(2) StringBuilder 适用于被频繁使用的场景,它比 StringBuffer 效率高
(3) StringBuilder 是 final 类,不能被继承
(4) 在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数值。
(5) StringBuilder 实现了 Serializable 接口,说明 StringBuilder 对象是可串行化的(可以在网络中传输)
(6)StringBuilder 的直接父类是 AbstractStringBuilder ,其中有属性 char [ ] value(不是 final),该 value 数组存放字符串内容
(7) 因为 StringBuilder 字符内容是存在 char [ ] value (堆空间), 在对字符串增加 / 删除时不用每次都更换地址(即不是每次创建新对象),所以效率高于 String
常用方法
基本介绍
StringBuider 的方法与 StringBuffer 兼容,调用 StringBuffer 中相应的方法即可
| 方法 | 描述 |
|---|---|
| append("字符串") | 在字符串的末尾添加,可以连续调用 |
| delete(索引 1,索引 2) | 索引区间是左闭右开 |
| deleteCharAt(索引) | 删除指定索引的内容 |
| replace(索引 1,索引 2,字符串) | 索引区间是左闭右开 |
| insert(索引,字符串) | 指定索引位置插入字符串 |
| reverse() | 翻转字符串 |
| substring(索引 1,索引 2) | 截取指定区间的子字符串,索引区间左闭右开 |
| indexOf("字符串") | 获取第一次出现的索引 |
| lastIndexOf("字符串") | 获取最后一次出现的索引 |
| setLength(0) | 清空内容,但是缓存空间仍然保留,下次直接复用,性能更好 |
代码示例
java
StringBuffer stringBuffer = new StringBuffer("hello~");
System.out.println("stringBuffer --> " + stringBuffer);
// append
stringBuffer.append("world");
System.out.println("append(\"world\") --> " + stringBuffer);
//delete
stringBuffer.delete(6,11);
System.out.println("delete(6,11) --> " + stringBuffer);
// deleteCharAt()
stringBuffer.deleteCharAt(5);
System.out.println("deleteCharAt(5) --> " + stringBuffer);
// insert()
stringBuffer.insert(5,"~world");
System.out.println("insert(5,\"~world\") --> " + stringBuffer);
// subString()
System.out.println("stringBuffer.substring(5,11) --> " + stringBuffer.substring(5,11));
// replace()
stringBuffer.replace(5,11,"");
System.out.println("replace(5,11,\"\") --> " + stringBuffer);
// indexOf()
System.out.println("indexOf(\"l\") --> " + stringBuffer.indexOf("l"));
// lastIndexOf()
System.out.println("lastIndexOf(\"l\") --> " + stringBuffer.lastIndexOf("l"));
// reverse()
System.out.println("reverse() --> " + stringBuffer.reverse());输出结果
java
stringBuffer --> hello~
append("world") --> hello~world
delete(6,11) --> hello~
deleteCharAt(5) --> hello
insert(5,"~world") --> hello~world
stringBuffer.substring(5,11) --> ~world
replace(5,11,"") --> hello
indexOf("l") --> 2
lastIndexOf("l") --> 3
reverse() --> olleh