Java StringBuilder类及实例

Java StringBuilder类及实例

Java中的 StringBuilder 表示一个可变的字符序列。由于Java中的String类创建了一个不可变的字符序列,StringBuilder类提供了一个替代String类的方法,因为它创建了一个可变的字符序列。StringBuilder的功能与StringBuffer类非常相似,因为它们都通过创建一个可变的字符序列来替代String Class。然而,StringBuilder类与StringBuffer类的不同之处在于同步性。StringBuilder类不提供同步性的保证,而StringBuffer类则提供。因此,这个类被设计为在StringBuffer被单线程使用的地方作为StringBuffer的替代品(通常是这种情况)。在可能的情况下,我们建议优先使用这个类而不是StringBuffer,因为在大多数实现中它会更快。StringBuilder的实例在被多线程使用时是不安全的。如果需要这种同步,建议使用StringBuffer。与String Buffer相比,String Builder不是线程安全的,而且性能高。

类的层次结构如下。

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 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

Java中的方法 StringBuilder

StringBuilder append(X x) : 该方法将X类型参数的字符串表示附加到该序列中。

  1. StringBuilder appendCodePoint(int codePoint) : 该方法将codePoint参数的字符串表示附加到该序列中。
  2. int capacity() : 该方法返回当前的容量。
  3. charAt(int index) : 该方法返回该序列中指定索引处的char值。
  4. IntStream chars() : 该方法返回此序列中的int零扩展的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. StringBuilder deleteCharAt(int index) : 该方法删除此序列中指定位置的字符。
  11. void ensureCapacity(int minimumCapacity) : 该方法确保容量至少等于指定的最小值。
  12. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) : 此方法是将此序列中的字符复制到目标字符数组dst中。
  13. int indexOf() : 该方法返回指定子串的第一次出现在这个字符串中的索引。
  14. StringBuilder insert(int offset, boolean b) : 该方法将布尔替代参数的字符串表示法插入到这个序列中。
  15. StringBuilder insert() : 该方法将char参数的字符串表示法插入到这个序列中。
  16. int lastIndexOf() : 该方法返回指定子串的最后出现在这个字符串中的索引。
  17. int length() : 该方法返回长度(字符数)。
  18. int offsetByCodePoints(int index, int codePointOffset) : 该方法返回该序列中与给定索引偏移的codePointOffset代码点的索引。
  19. StringBuilder replace(int start, int end, String str) : 该方法用指定的String中的字符替换该序列中的子串。
  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 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程