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 多線程任務中的多線程時,您可能需要這個類。