Java中的StringBuilder类用法及其示例

2021年3月24日14:55:02 发表评论 887 次浏览

StringBuilderJava中的代表可变字符序列。自从弦类在Java中创建不可变的字符序列时, StringBuilder类为弦类, 因为它会创建可变的字符序列。 StringBuilder的功能与字符串缓冲区类, 因为它们都为弦类通过使字符序列可变。但是, StringBuilder类与字符串缓冲区类基于同步。 StringBuilder类不能保证同步, 而字符串缓冲区类。因此, 该类旨在用作的替代品。字符串缓冲区在单个线程正在使用StringBuffer的地方(通常是这种情况)。建议在可能的情况下优先使用此类字符串缓冲区因为在大多数实现中它会更快。 StringBuilder实例不能安全地用于多个线程。如果需要这样的同步, 那么建议字符串缓冲区使用。

类层次结构:

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
         // usind StringBuilder() constructor
         StringBuilder str
             = new StringBuilder();
  
         str.append( "GFG" );
  
         // print string
         System.out.println( "String = "
                            + str.toString());
  
         // create a StringBuilder object
         // usind StringBuilder(CharSequence) constructor
         StringBuilder str1
             = new StringBuilder( "AAAABBBCCCC" );
  
         // print string
         System.out.println( "String1 = "
                            + str1.toString());
  
         // create a StringBuilder object
         // usind StringBuilder(capacity) constructor
         StringBuilder str2
             = new StringBuilder( 10 );
  
         // print string
         System.out.println( "String2 capacity = "
                            + str2.capacity());
  
         // create a StringBuilder object
         // usind StringBuilder(String) constructor
         StringBuilder str3
             = new StringBuilder(str1);
  
         // print string
         System.out.println( "String3 = "
                            + str3.toString());
     }
}

输出如下:

String = GFG
String1 = AAAABBBCCCC
String2 capacity = 10
String3 = AAAABBBCCCC

Java StringBuilder中的方法:

  1. StringBuilder追加(X x):此方法将X类型参数的字符串表示形式附加到序列中。
  2. StringBuilder appendCodePoint(int codePoint):此方法将codePoint参数的字符串表示形式附加到此序列。
  3. 整数容量():此方法返回当前容量。
  4. char charAt(int index):此方法在指定的索引处按此顺序返回char值。
  5. IntStream chars():此方法返回此序列的int零扩展char值的流。
  6. int codePointAt(int索引):此方法返回指定索引处的字符(Unicode代码点)。
  7. int codePointBefore(int索引):此方法返回指定索引之前的字符(Unicode代码点)。
  8. int codePointCount(int beginIndex, int endIndex):此方法返回此序列的指定文本范围内的Unicode代码点数。
  9. IntStream codePoints():此方法从此序列返回代码点值流。
  10. StringBuilder delete(int开始, int结束):此方法删除此序列的子字符串中的字符。
  11. StringBuilder deleteCharAt(int索引):此方法按此顺序删除指定位置的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):此方法返回此序列内的索引, 该索引与codeIndexOffset代码点的给定索引偏移。
  20. StringBuilder replace(int开头, int结束, String str):此方法用指定String中的字符替换此序列的子字符串中的字符。
  21. StringBuilder reverse():此方法导致此字符序列被序列的相反字符替换。
  22. void setCharAt(int index, char ch):在此方法中, 指定索引处的字符设置为ch。
  23. 无效setLength(int newLength):此方法设置字符序列的长度。
  24. CharSequence subSequence(整数开始, 整数结束):此方法返回一个新的字符序列, 该序列是该序列的子序列。
  25. 字符串substring():此方法返回一个新的String, 该字符串包含此字符序列中当前包含的字符的子序列。
  26. 字符串toString():此方法返回一个表示此序列中数据的字符串。
  27. 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

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


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: