Skip to content

StringBuilder(重点)


结构关系图

alt text

基本介绍

(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