儘管 String 有追加功能,為什麼還要使用 StringBuilder?
Java 的 String 類別提供了追加內容的方法,但它是不可變的,這意味著它不能修改其內部狀態。因此,每個追加操作都會建立一個新的 String 對象,這是一個重複追加的低效過程。
Enter StringBuilder
StringBuilder 透過可變來解決此限制。它的追加方法會修改其底層字元數組,從而無需每次追加都會產生新物件。這種效率在循環和複雜的字串操作中特別有價值。
比較:
考慮以下範例:
String str = ""; for (int i = 0; i < 500; i++) { str += i; }
此程式碼建立 500新的 String 對象,會產生大量開銷。相反,使用 StringBuilder:
StringBuilder sb = new StringBuilder(); for (int i = 0; i < 500; i++) { sb.append(i); }
增強同一個 String 物件而不建立新的。
自動轉換
編譯器自動翻譯連接表達式(例如“String d = a b c”)轉換為基於 StringBuilder的操作:
String d = new StringBuilder(a).append(b).append(c).toString();
其他選項:
除了StringBuilder之外,Java還提供了StringBuffer,它具有同步方法。它主要在需要線程安全存取的多線程場景中有用。
以上是當字串有 Append 方法時,為什麼要使用 StringBuilder?的詳細內容。更多資訊請關注PHP中文網其他相關文章!