StringBuilder类常用方法(Java)

StringBuilder类常用方法

在这里插入图片描述


StringBuilder 是 Java 中常用的字符串缓冲区类,适用于频繁修改字符串的场景。

  • 可变性:StringBuilder 对象是可变的,可以在同一个对象上进行多次修改。
  • 性能: 正因为StringBuilder 是可变的,SB在字符串拼接操作中比 String 更高效,特别是在循环中。
  • 线程不安全:StringBuilder 是线程不安全的,适用于单线程环境。如果需要线程安全的字符串构建器,可以使用 StringBuffer。

1. append(): 将指定字符串、字符、布尔值或其他数据类型的表示追加到字符串缓冲区的末尾

在这里插入图片描述

在这里插入图片描述

2. insert():在指定位置插入指定字符串、字符、布尔值或其他数据类型的表示。

Tips:insert(i)是插在插入位置之前!

在这里插入图片描述

3. replace():用新的字符串替换指定范围内的字符序列。

不包含结束位置下标。

在这里插入图片描述

4. delete():删除指定范围内的字符序列。

不包含结束位置下标。

在这里插入图片描述

5. deleteCharAt():删除指定索引处的字符。

在这里插入图片描述

6. reverse(): 反转字符串缓冲区中的字符序列。

在这里插入图片描述

7. charAt():获取指定索引处的字符。

在这里插入图片描述

8. setCharAt():将指定索引处的字符替换为新的字符。

在这里插入图片描述

9. substring():返回一个新的字符串,其中包含字符串缓冲区中指定范围内的字符。

不包含结束位置下标。

在这里插入图片描述

10. indexOf():返回指定子字符串第一次出现的索引。

在这里插入图片描述

11. lastIndexOf():返回指定子字符串最后一次出现的索引。

在这里插入图片描述

12. length():返回字符串缓冲区中的字符数。

在这里插入图片描述

13. capacity():返回当前容量,即可以存储的字符数。

在这里插入图片描述

14. ensureCapacity(): 确保容量至少等于指定的最小值。

在这里插入图片描述

15. toString():将字符串缓冲区中的字符序列转换为字符串。

在这里插入图片描述

17. setLength():用于设置当前串的长度。

如果新长度小于当前长度,那么超出部分的字符将会被丢弃;如果新长度大于当前长度,那么超出部分的字符将会以 null 字符填充。

在这里插入图片描述

18. equals():比较两个 StringBuilder 对象的引用是否相等。

在这里插入图片描述

  • sb1 和 sb2 是两个不同的 StringBuilder 对象,即使它们的内容相同,equals 方法也会返回 false,因为它们的引用不同。

StringBuilder 类中的 equals() 方法并没有重写 Object 类中的 equals() 方法,而是沿用了 Object 类中的 equals() 方法。

在这里插入图片描述

实际上比较的是对象的引用是否相等,而不是对象内容是否相等。


如果需要比较两个 StringBuilder 对象的内容是否相等:

(1)先将其转换为 String 类型,然后使用 String 类的 equals() 方法进行比较。

or:

(2)使用 compareTo方法,返回值等于0说明相等🤣🤣🤣

compareTo 方法:按照字典顺序比较两个 StringBuilder 对象的内容。

返回值表示比较的结果:

  • 负数:A的内容小于 B 的内容。
  • 0:A 的内容等于 B 的内容。
  • 正数:A 的内容大于 B 的内容。

在这里插入图片描述


整理不易 一键三连呀列位~ 🤣🤣🤣🤣

### 使用 C# 中的 `StringBuilder` 高效追加字符串 在 C# 中,`StringBuilder` 是一个专门用于高效处理字符串的。它通过提供可变字符串的功能解决了传统字符串不可变性的性能问题。以下是关于如何使用 `StringBuilder` 来高效追加字符串的具体方法和示例。 --- #### 创建 `StringBuilder` 对象 可以通过不同的构造函数创建 `StringBuilder` 对象。常用的构造函数如下: - 默认构造函数:`new StringBuilder()`,创建一个初始容量为 16 的实例。 - 带初始字符串的构造函数:`new StringBuilder(string value)`,根据给定字符串初始化。 - 指定初始容量的构造函数:`new StringBuilder(int capacity)`,设置初始容量以减少扩容开销。 ```csharp using System.Text; // 示例 1: 不带参数的构造函数,默认容量为 16 StringBuilder sbDefault = new StringBuilder(); // 示例 2: 带初始字符串的构造函数 StringBuilder sbWithInitialValue = new StringBuilder("初始字符串"); // 示例 3: 指定初始容量的构造函数 StringBuilder sbWithCapacity = new StringBuilder(50); ``` 这些构造函数的选择取决于具体的应用场景以及预期的字符串长度[^2]。 --- #### 追加字符串的方法 `StringBuilder` 提供了多个方法来追加字符串或字符,其中最常见的方法是 `Append` 和 `AppendLine`。 ##### 1. 使用 `Append` 方法 `Append` 方法可以直接将字符串、字符或其他型的值追加到现有内容之后。 ```csharp StringBuilder sb = new StringBuilder("起始文本"); sb.Append("这是追加的内容"); // 追加普通字符串 sb.Append(' '); // 追加单个空格字符 sb.Append(true); // 追加布尔值 sb.Append(42); // 追加整数 Console.WriteLine(sb.ToString()); // 输出完整的字符串 ``` ##### 2. 使用 `AppendLine` 方法 `AppendLine` 方法会在追加的内容后面自动添加换行符(`\r\n`),适用于构建多行文本。 ```csharp StringBuilder sb = new StringBuilder(); sb.AppendLine("第一行"); sb.AppendLine("第二行"); sb.AppendLine("第三行"); Console.WriteLine(sb.ToString()); // 输出: // 第一行 // 第二行 // 第三行 ``` 这两种方法都可以接受多种数据型作为输入,并将其转换为字符串后再进行追加[^1]。 --- #### 控制字符串的格式 除了基本的追加功能外,还可以结合 `$` 插值语法或 `String.Format` 方法实现更灵活的字符串格式化。 ##### 示例:插值语法与 `Append` ```csharp int number = 42; string name = "World"; StringBuilder sb = new StringBuilder(); sb.Append($"Hello {name}, the answer is {number}"); Console.WriteLine(sb.ToString()); // 输出: Hello World, the answer is 42 ``` ##### 示例:`String.Format` 结合 `Append` ```csharp StringBuilder sb = new StringBuilder(); sb.Append(String.Format("The time is {0}", DateTime.Now)); Console.WriteLine(sb.ToString()); // 输出: The time is [当前时间] ``` 这种方式非常适合需要动态插入变量的情况[^3]。 --- #### 清除已有的内容 如果需要清空现有的字符串内容以便重新开始构建新字符串,可以使用 `Clear` 方法。 ```csharp StringBuilder sb = new StringBuilder("原始内容"); Console.WriteLine(sb.ToString()); // 输出: 原始内容 sb.Clear(); // 清空内容 Console.WriteLine(sb.ToString()); // 输出为空字符串 ``` 需要注意的是,清除后 `StringBuilder` 的容量保持不变,只有长度被重置为 0[^4]。 --- #### 性能优化建议 1. **预估容量**:在创建 `StringBuilder` 时尽量指定合理的初始容量,避免因多次扩容带来的额外开销。 2. **批量操作**:对于大量连续追加的操作,优先使用 `StringBuilder` 而非传统的字符串拼接。 3. **及时释放资源**:虽然 `StringBuilder` 本身不涉及未托管资源,但在不再需要时应尽早丢弃引用以帮助垃圾回收机制工作。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喻师傅

谢谢您!我会继续努力创作!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值