當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java StringBuilder Class用法及代碼示例


Java 中的StringBuilder 表示可變的字符序列。由於 Java 中的 String 類創建了不可變的字符序列,因此 StringBuilder 類提供了 String 類的替代方案,因為它創建了可變的字符序列。 StringBuilder 的函數與 StringBuffer 類非常相似,因為它們都通過創建可變的字符序列來提供 String 類的替代方案。然而,StringBuilder 類與StringBuffer 類在同步方麵有所不同。 StringBuilder 類不提供同步保證,而 StringBuffer 類提供同步保證。因此,此類設計為在單線程使用 StringBuffer 的地方(通常是這種情況)用作 StringBuffer 的 drop-in 替代品。如果可能,建議優先使用此類而不是 StringBuffer,因為它在大多數實現下會更快。 StringBuilder 的實例對於多個線程使用並不安全。如果需要此類同步,則建議使用StringBuffer。 String Builder 不是線程安全的,並且與 String buffer 相比性能較高。

類層次結構如下:

java.lang.Object
 ↳ java.lang
    ↳ Class StringBuilder

用法:

public final class StringBuilder
    extends Object
    implements Serializable, CharSequence

Java StringBuilder 類中的構造函數

  • StringBuilder():構造一個字符串生成器,其中不包含任何字符,初始容量為 16 個字符。
  • StringBuilder(int 容量):構造一個字符串生成器,其中不包含任何字符,並且初始容量由容量參數指定。
  • StringBuilder(CharSequence seq):構造一個字符串生成器,其中包含與指定 CharSequence 相同的字符。
  • 字符串生成器(字符串 str):構造一個初始化為指定字符串內容的字符串生成器。

下麵是一個示例程序,用於說明 Java 中的StringBuilder。

Java


// Java Code to illustrate StringBuilder
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
public class GFG1 {
    public static void main(String[] argv) throws Exception
    {
        // Create a StringBuilder object
        // using StringBuilder() constructor
        StringBuilder str = new StringBuilder();
        str.append("GFG");
        // print string
        System.out.println("String = " + str.toString());
        // create a StringBuilder object
        // using StringBuilder(CharSequence) constructor
        StringBuilder str1
            = new StringBuilder("AAAABBBCCCC");
        // print string
        System.out.println("String1 = " + str1.toString());
        // create a StringBuilder object
        // using StringBuilder(capacity) constructor
        StringBuilder str2 = new StringBuilder(10);
        // print string
        System.out.println("String2 capacity = "
                           + str2.capacity());
        // create a StringBuilder object
        // using StringBuilder(String) constructor
        StringBuilder str3
            = new StringBuilder(str1.toString());
        // print string
        System.out.println("String3 = " + str3.toString());
    }
}
輸出
String = GFG
String1 = AAAABBBCCCC
String2 capacity = 10
String3 = AAAABBBCCCC

Methods in Java StringBuilder

StringBuilder append(X x) :此方法將 X 類型參數的字符串表示形式附加到序列中。

  1. StringBuilder appendCodePoint(int codePoint) :此方法將 codePoint 參數的字符串表示形式附加到此序列。
  2. int capacity():此方法返回當前容量。
  3. char charAt(int index):此方法返回此序列中指定索引處的 char 值。
  4. IntStream chars():此方法返回 int zero-extending 此序列中的 char 值的流。
  5. int codePointAt(int index):此方法返回指定索引處的字符(Unicode 代碼點)。
  6. int codePointBefore(int index):此方法返回指定索引之前的字符(Unicode 代碼點)。
  7. int codePointCount(int beginIndex, int endIndex):此方法返回此序列的指定文本範圍內的 Unicode 代碼點的數量。
  8. IntStream codePoints():此方法返回此序列中的代碼點值流。
  9. StringBuilder delete(int start, int end):此方法刪除此序列的子字符串中的字符。
  10. StringBuilderdeleteCharAt(int 索引):此方法刪除此序列中指定位置的字符。
  11. void ensureCapacity(int minimumCapacity):此方法確保容量至少等於指定的最小值。
  12. StringBuilder getChars():此方法將字符從此序列複製到目標字符數組 dst 中。
  13. int indexOf():此方法返回此字符串中指定子字符串第一次出現的索引。
  14. StringBuilder 插入(int 偏移量,布爾值 b):此方法將布爾替代參數的字符串表示形式插入到此序列中。
  15. StringBuilder insert():此方法將 char 參數的字符串表示形式插入到此序列中。
  16. int lastIndexOf():此方法返回此字符串中最後一次出現的指定子字符串的索引。
  17. int length():此方法返回長度(字符數)。
  18. int offsetByCodePoints(int 索引, int codePointOffset):此方法返回此序列中的索引,該索引與給定索引偏移 codePointOffset 代碼點。
  19. StringBuilder replace():此方法將此序列的子字符串中的字符替換為指定字符串中的字符。
  20. StringBuilder reverse():此方法導致該字符序列被相反的序列替換。
  21. void setCharAt(int index, char ch) :在此方法中,指定索引處的字符設置為 ch。
  22. void setLength(int newLength):該方法設置字符序列的長度。
  23. CharSequence subSequence(int start, int end):此方法返回一個新的字符序列,該序列是該序列的子序列。
  24. String substring():此方法返回一個新字符串,其中包含當前包含在此字符序列中的字符子序列。
  25. String toString():此方法返回表示此序列中的數據的字符串。
  26. void trimToSize():此方法嘗試減少用於字符序列的存儲。

例子:

Java


// Java code to illustrate
// methods of StringBuilder
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
public class GFG1 {
    public static void main(String[] argv)
        throws Exception
    {
        // create a StringBuilder object
        // with a String pass as parameter
        StringBuilder str
            = new StringBuilder("AAAABBBCCCC");
        // print string
        System.out.println("String = "
                           + str.toString());
        // reverse the string
        StringBuilder reverseStr = str.reverse();
        // print string
        System.out.println("Reverse String = "
                           + reverseStr.toString());
        // Append ', '(44) to the String
        str.appendCodePoint(44);
        // Print the modified String
        System.out.println("Modified StringBuilder = "
                           + str);
        // get capacity
        int capacity = str.capacity();
        // print the result
        System.out.println("StringBuilder = " + str);
        System.out.println("Capacity of StringBuilder = "
                           + capacity);
    }
}
輸出
String = AAAABBBCCCC
Reverse String = CCCCBBBAAAA
Modified StringBuilder = CCCCBBBAAAA,
StringBuilder = CCCCBBBAAAA,
Capacity of StringBuilder = 27

StringBuilder是Java中另一個用於操作字符串的類。與 StringBuffer 一樣,它是一個可變類,允許您修改它表示的字符串的內容。但是,StringBuilder 不是線程安全的,因此不應該在多線程環境中使用。

以下是如何在 Java 中使用 StringBuilder 的一些示例:

Java


public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("Hello");
        sb.append(" ");
        sb.append("world!");
        System.out.println(sb.toString()); // Output: "Hello world!"
         
        sb.insert(6, "beautiful ");
        System.out.println(sb.toString()); // Output: "Hello beautiful world!"
         
        sb.reverse();
        System.out.println(sb.toString()); // Output: "!dlrow lufituaeb olleH"
    }
}
輸出
Hello world!
Hello beautiful world!
!dlrow lufituaeb olleH


相關用法


注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 StringBuilder Class in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。