“我們只需覆蓋 StringBuilder,然後我認為我們就完成了。”

“如您所知,StringBuilder 類似於 String 類,只是它是可變的。”

“而且我還記得,當我們簡單地將字符串相加時,編譯器會生成使用 StringBuilder 的代碼。”

“是的,你是對的。你的記憶力真好。話又說回來,每個機器人都有。我總是忘記這一點。”

“讓我們看看使用StringBuilder類可以做什麼:”

1) 我有一個普通的字符串,我想讓它可變。我怎麼做?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);

2) 我想在現有的可變字符串中添加一個字符?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.append("!");

3) 以及如何將 StringBuilder 轉換回字符串?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.append("!");
s = s2.toString();

4)如果我需要刪除一個角色?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.deleteCharAt(2); //Becomes "Beder"

5) 如何用另一個替換字符串的一部分?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.replace (3, 5, "_DE_"); //Becomes "Ben_DE_r"

6) 如果我需要反轉一個字符串怎麼辦?

String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.reverse(); //Becomes "redneB";

“太棒了。謝謝,Ellie,一切都說得通了。”

“我很高興你喜歡它。”

“我還想提醒你一些比拉博應該告訴你的事情。”

“還有另一個類稱為StringBuffer。它類似於StringBuilder,但它的方法被聲明為同步的。這意味著在調用其中一個方法之前,Java 機器會檢查對像是否忙;如果不是,JVM 會標記它因為忙。退出方法後,對像被釋放。因此,這些調用速度較慢。除非萬不得已,否則不應使用StringBuffer 。”

“但是,如果您需要一個可跨多個線程使用的可變字符串,那麼您找不到比StringBuffer更好的東西了。”

“謝謝你提供的信息。我想有一天它可能會派上用場。”