📜  Java中的StringBuilder类及其示例

📅  最后修改于: 2020-03-25 02:43:46             🧑  作者: Mango

Java中的StringBuilder表示可变的字符序列。由于Java中的String类创建了不可变的字符序列,因此StringBuilder类提供了String Class的替代方法,因为它创建了可变的字符序列。StringBuilder的功能与StringBuffer类非常相似,因为它们都通过创建可变的字符序列来提供String类的替代方法。然而StringBuilder类不同于所述的StringBuffer类。StringBuilder类不提供同步保证,而StringBuffer类提供线程安全的同步保证。因此,此类设计为在单个线程正在使用StringBuffer的位置(通常是这种情况)用作StringBuffer的直接替代。在可能的情况下,建议优先使用StringBuilder类而不是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):构造一个字符串生成器,其中不包含任何字符,并且初始容量由Capacity参数指定。
  • StringBuilder(CharSequence seq):构造一个字符串生成器,其中包含与指定CharSequence相同的字符。
  • StringBuilder(String str):构造一个初始化为指定字符串内容的字符串生成器。

下面是一个示例程序,用于说明Java中的StringBuilder:

// Java展示如何使用StringBuilder
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
public class GFG1 {
    public static void main(String[] argv)
        throws Exception
    {
        // 创建StringBuilder对象
        StringBuilder str
            = new StringBuilder();
        str.append("GFG");
        // 打印string
        System.out.println("String = "
                           + str.toString());
        // 创建StringBuilder对象
        // 使用StringBuilder(CharSequence)构造器
        StringBuilder str1
            = new StringBuilder("AAAABBBCCCC");
        //  打印string
        System.out.println("String1 = "
                           + str1.toString());
        // 创建StringBuilder对象
        // 使用StringBuilder(capacity)构造函数
        StringBuilder str2
            = new StringBuilder(10);
        // 打印string
        System.out.println("String2 capacity = "
                           + str2.capacity());
        // 创建StringBuilder对象
        // 使用StringBuilder(String)构造器
        StringBuilder str3
            = new StringBuilder(str1);
        // 打印string
        System.out.println("String3 = "
                           + str3.toString());
    }
}

输出:

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):此方法删除此序列中指定位置的char。
  12. void sureCapacity(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):此方法用指定String中的字符替换此序列的子字符串中的字符。
  21. StringBuilder reverse():此方法导致此字符序列被序列的反向替换。
  22. void setCharAt(int index,char ch):在此方法中,指定索引处的字符设置为ch。
  23. setLength(int newLength):此方法设置字符序列的长度。
  24. CharSequence subSequence(int start,int end):此方法返回一个新的字符序列,该字符序列是该序列的子序列。
  25. String substring():此方法返回一个新的String,该字符串包含此字符序列中当前包含的字符的子序列。
  26. String toString():此方法返回一个表示此序列中数据的字符串。
  27. void trimToSize():此方法尝试减少用于字符序列的存储。

例:

// Java展示StringBuilder当中的方法
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
public class GFG1 {
    public static void main(String[] argv)
        throws Exception
    {
        // 创建一个StringBuilder对象
        StringBuilder str
            = new StringBuilder("AAAABBBCCCC");
        // 打印string
        System.out.println("String = "
                           + str.toString());
        // 反转string
        StringBuilder reverseStr = str.reverse();
        // 打印string
        System.out.println("反转的string = "
                           + reverseStr.toString());
        //  对string,append', '(44)
        str.appendCodePoint(44);
        // 打印调整后的StringBuilder
        System.out.println("调整后的StringBuilder = "
                           + str);
        // 获取容量
        int capacity = str.capacity();
        // 打印结果
        System.out.println("StringBuilder = " + str);
        System.out.println("StringBuilder容量 = "
                           + capacity);
    }
}

输出:

String = AAAABBBCCCC
反转的string = CCCCBBBAAAA
调整后的StringBuilder = CCCCBBBAAAA,
StringBuilder = CCCCBBBAAAA,
StringBuilder容量 = 27