📜  Java中的StringBuilder类与示例

📅  最后修改于: 2022-05-13 01:55:03.124000             🧑  作者: Mango

Java中的StringBuilder类与示例

Java中的StringBuilder表示可变的字符序列。由于Java中的 String 类创建了一个不可变的字符序列,因此 StringBuilder 类提供了 String 类的替代方案,因为它创建了一个可变的字符序列。 StringBuilder 的函数与 StringBuffer 类非常相似,因为它们都通过制作可变的字符序列来提供 String 类的替代方案。但是,StringBuilder 类在同步的基础上与 StringBuffer 类不同。 StringBuilder 类不提供同步保证,而 StringBuffer 类则提供。因此,此类设计用于在单个线程正在使用 StringBuffer 的地方(通常情况下)用作 StringBuffer 的替代品。在可能的情况下,建议优先使用此类而不是 StringBuffer,因为它在大多数实现下会更快。 StringBuilder 的实例对于多线程使用是不安全的。如果需要这种同步,则建议使用 StringBuffer。
类层次结构:

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

句法:

public final class StringBuilder
    extends Object
    implements Serializable, CharSequence

Java StringBuilder 中的构造函数:

  • StringBuilder():构造一个没有字符且初始容量为 16 个字符的字符串构建器。
  • StringBuilder(int capacity):构造一个字符串构建器,其中没有字符,初始容量由容量参数指定。
  • StringBuilder(CharSequence seq):构造一个字符串构建器,其中包含与指定的 CharSequence 相同的字符。
  • StringBuilder(String 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());
    }
}


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 = GFG
String1 = AAAABBBCCCC
String2 capacity = 10
String3 = AAAABBBCCCC

Java StringBuilder 中的方法:

  1. StringBuilder append(X x) :此方法将 X 类型参数的字符串表示附加到序列中。
  2. StringBuilder appendCodePoint(int codePoint) :此方法将 codePoint 参数的字符串表示附加到此序列。
  3. int capacity() :此方法返回当前容量。
  4. char charAt(int index) :此方法返回此序列中指定索引处的 char 值。
  5. IntStream chars() :此方法返回一个 int 流,对来自该序列的 char 值进行零扩展。
  6. int codePointAt(int index) :此方法返回指定索引处的字符(Unicode 代码点)。
  7. int codePointBefore(int index) :此方法返回指定索引之前的字符(Unicode 代码点)。
  8. int codePointCount(int beginIndex, int endIndex) :此方法返回此序列的指定文本范围内的 Unicode 代码点数。
  9. IntStream codePoints() :此方法从该序列返回代码点值流。
  10. StringBuilder delete(int start, int end) :此方法删除此序列的子字符串中的字符。
  11. StringBuilder deleteCharAt(int index) :此方法删除此序列中指定位置的字符。
  12. void ensureCapacity(int minimumCapacity) :此方法确保容量至少等于指定的最小值。
  13. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :此方法字符从该序列复制到目标字符数组 dst。
  14. int indexOf() :此方法返回此字符串中第一次出现指定子字符串的索引。
  15. StringBuilder insert(int offset, boolean b) :此方法将 booalternatelean 参数的字符串表示形式插入到此序列中。
  16. StringBuilder insert() :此方法将 char 参数的字符串表示形式插入到此序列中。
  17. int lastIndexOf() :此方法返回此字符串中最后一次出现指定子字符串的索引。
  18. int length() :此方法返回长度(字符数)。
  19. int offsetByCodePoints(int index, int codePointOffset) :此方法返回此序列中的索引,该索引与给定索引偏移 codePointOffset 代码点。
  20. StringBuilder replace(int start, int end, String str) :此方法将此序列的子字符中的字符替换为指定字符串中的字符。
  21. StringBuilder reverse() :此方法导致此字符序列被序列的反向替换。
  22. void setCharAt(int index, char ch) : 在这个方法中,指定索引处的字符被设置为 ch。
  23. void setLength(int newLength) :此方法设置字符序列的长度。
  24. CharSequence subSequence(int start, int end) :这个方法返回一个新的字符序列,它是这个序列的子序列。
  25. String substring() :此方法返回一个新字符串,其中包含当前包含在此字符序列中的字符子序列。
  26. String toString() :此方法返回一个表示此序列中数据的字符串。
  27. 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

参考:https://docs.oracle.com/javase/9/docs/api/ Java/lang/StringBuilder.html