当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。