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