StringBuilder、StringBuffer 的 API

文章详细介绍了Java中String、StringBuffer和StringBuilder的区别。String是不可变的字符序列,适合单线程环境;StringBuffer是线程安全但效率较低的可变字符序列;StringBuilder是JDK1.5引入的非线程安全但效率更高的可变字符序列。它们都提供了一系列方法如append、delete、replace等用于操作字符序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 区分 String、StringBuffer、StringBuilder
    • String: 不可变的字符序列; 底层使用 char [] 数组存储 (JDK8.0 中)
    • StringBuffer: 可变的字符序列;线程安全(方法有 synchronized 修饰),效率低;底层使用 char [] 数组存储 (JDK8.0 中)
    • StringBuilder: 可变的字符序列; jdk1.5 引入,线程不安全的,效率高;底层使用 char [] 数组存储 (JDK8.0 中)

StringBuilder、StringBuffer 的 API 是完全一致的,并且很多方法与 String 相同。

1、常用 API

(1)StringBuffer append (xx):提供了很多的 append () 方法,用于进行字符串追加的方式拼接
(2)StringBuffer delete (int start, int end):删除 [start,end) 之间字符
(3)StringBuffer deleteCharAt (int index):删除 [index] 位置字符
(4)StringBuffer replace (int start, int end, String str):替换 [start,end) 范围的字符序列为 str
(5)void setCharAt (int index, char c):替换 [index] 位置字符
(6)char charAt (int index):查找指定 index 位置上的字符
(7)StringBuffer insert (int index, xx):在 [index] 位置插入 xx
(8)int length ():返回存储的字符数据的长度
(9)StringBuffer reverse ():反转

2、其它 API

(1)int indexOf (String str):在当前字符序列中查询 str 的第一次出现下标
(2)int indexOf (String str, int fromIndex):在当前字符序列 [fromIndex, 最后] 中查询 str 的第一次出现下标
(3)int lastIndexOf (String str):在当前字符序列中查询 str 的最后一次出现下标
(4)int lastIndexOf (String str, int fromIndex):在当前字符序列 [fromIndex, 最后] 中查询 str 的最后一次出现下标
(5)String substring (int start):截取当前字符序列 [start, 最后]
(6)String substring (int start, int end):截取当前字符序列 [start,end)
(7)String toString ():返回此序列中数据的字符串表示形式
(8)void setLength (int newLength) :设置当前字符序列长度为 newLength

### Java StringBufferStringBuilder API 文档及使用方法 #### StringBuffer 类概述 `StringBuffer` 是可变字符序列的一个实现,允许对字符串进行修改而不创建新的对象。此类提供了一个线程安全的可变字符序列[^2]。 #### StringBuilder 类概述 `StringBuilder` 同样提供了可变字符序列的功能,但是其所有公共实例方法都不是同步的,因此在单线程环境下性能优于 `StringBuffer`[^3]。 #### 构造函数 两者都支持多种构造方式: - 默认无参构造函数初始化一个空缓冲区。 - 带有一个初始容量参数的构造函数。 - 接受字符串作为参数来初始化缓冲区的内容。 ```java // 创建一个新的空 StringBuffer,默认容量为16个字符 StringBuffer sb1 = new StringBuffer(); // 使用指定容量创建一个新的空 StringBuffer StringBuffer sb2 = new StringBuffer(10); // 使用给定字符串内容创建一个新的 StringBuffer StringBuffer sb3 = new StringBuffer("Hello"); // 对应的 StringBuilder 构造函数也相同 StringBuilder builder1 = new StringBuilder(); StringBuilder builder2 = new StringBuilder(10); StringBuilder builder3 = new StringBuilder("Hello"); ``` #### 常见操作方法 ##### 追加数据 可以通过调用 `append()` 方法向现有字符序列追加新字符或子串。 ```java sb1.append("World"); // "HelloWorld" builder1.append("! "); // "! " ``` ##### 插入数据 利用 `insert()` 可以在特定位置插入字符或字符串片段。 ```java sb1.insert(5, ", "); // "Hello, World" builder1.insert(0, "Hi"); // "Hi! " ``` ##### 删除部分序列 通过 `delete()` 或者更精确范围控制下的 `deleteCharAt()`,可以从当前序列中移除某些元素。 ```java sb1.delete(5, 7); // 移除了", "后的结果:"HelloWorld" builder1.deleteCharAt(2); // 移除索引处的'i' :"H ! " ``` ##### 替换部分内容 替换功能由 `replace()` 提供,在指定范围内替换成其他文本。 ```java sb1.replace(0, 5, "Bye"); // 将"Hello"改为"Bye": "Bye, World" ``` ##### 获取和设置长度 可以获取当前序列的实际长度(`length`)或是设定最大容量(`capacity`)。 ```java int currentLength = sb1.length(); // 当前长度 int capacitySize = sb1.capacity(); // 容量大小 ``` ##### 转化成不可变字符串 当完成所有的编辑之后,通常会希望得到最终版本的不可变表示形式——即转换回普通的 `String` 类型。 ```java String finalResult = sb1.toString(); // 得到最终的结果字符串 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值