1.修改字符串

在 Java 中,字符串是不可变对象。这样做是为了使 String 类高度优化并允许它在任何地方使用。例如,只推荐使用不可变类型作为 HashMap 集合中的键

然而,当程序员发现类是String可变的更方便时,经常会出现这样的情况。他们想要一个不会在每次调用其中一个方法时都创建新子字符串的类。

好吧,假设我们有一个非常大的字符串,我们需要经常在它的末尾添加一些东西。在这种情况下,即使是字符集合 ( ArrayList<Character>) 也比不断重新创建和连接 String 对象更有效。

这就是为什么将可以更改的类字符串类型添加到 Java 语言中的原因。它被称为StringBuilder

创建对象

StringBuilder要基于现有字符串创建对象,您需要执行如下语句:

StringBuilder name = new StringBuilder(string);

要创建一个空的可变字符串,您需要使用如下语句:

StringBuilder name = new StringBuilder();

方法列表

StringBuilder课程有两打有用的方法。以下是最重要的:

方法 描述
StringBuilder append(obj)
将传递的对象转换为字符串并将其附加到当前字符串
StringBuilder insert(int index, obj)
将传递的对象转换为字符串并插入到当前字符串中
StringBuilder replace(int start, int end, String str)
用传递的字符串替换 start..end 间隔指定的字符串部分
StringBuilder deleteCharAt(int index)
从字符串中删除具有指定索引的字符
StringBuilder delete(int start, int end)
从字符串中删除指定间隔内的字符
int indexOf(String str, int index)
在当前字符串中搜索子字符串
int lastIndexOf(String str, int index)
在当前字符串中搜索子字符串,从末尾开始
char charAt(int index)
返回字符串中传递的索引处的字符
String substring(int start, int end)
返回指定区间定义的子字符串
StringBuilder reverse()
反转当前字符串。
void setCharAt(int index, char)
将指定索引处的字符更改为传递的字符
int length()
返回字符串的字符长度

以下是每种方法的简要说明


二、方法说明:

附加到字符串

要向可变字符串 ( ) 添加内容StringBuilder,请使用该append()方法。例子:

代码 描述
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

转换为标准字符串

要将StringBuilder对象转换为 String 对象,只需调用其toString()方法即可。例子

代码 输出
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

如何删除角色?

要删除可变字符串中的字符,您需要使用 方法deleteCharAt()。例子:

代码 输出
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

如何用另一个字符串替换字符串的一部分?

为此有replace(int begin, int end, String str)方法。例子:

代码 输出
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. 使用字符串的有用示例

如何反转字符串?

有一种特殊的方法可以做到这一点—— reverse(); 例子:

代码 输出
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBuffer班级

还有另一个类——StringBuffer,它是类的类似物StringBuilder,但它的方法用修饰符标记synchronized。这意味着StringBuffer可以从多个线程同时访问该对象。

但它比 . 慢得多StringBuilder。当您开始积极探索Java 多线程任务中的多线程时,您可能需要这个类。