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类型参数的字符串表示附加到该序列中。
- StringBuilder appendCodePoint(int codePoint) : 该方法将codePoint参数的字符串表示附加到该序列中。
- int capacity() : 该方法返回当前的容量。
- 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) : 该方法将布尔替代参数的字符串表示法插入到这个序列中。
- StringBuilder insert() : 该方法将char参数的字符串表示法插入到这个序列中。
- int lastIndexOf() : 该方法返回指定子串的最后出现在这个字符串中的索引。
- int length() : 该方法返回长度(字符数)。
- int offsetByCodePoints(int index, int codePointOffset) : 该方法返回该序列中与给定索引偏移的codePointOffset代码点的索引。
- StringBuilder replace(int start, int end, String str) : 该方法用指定的String中的字符替换该序列中的子串。
- 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 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