当需要对字符串进行大量修改时,可以使用 StringBuffer 和 StringBuilder 类。
与字符串不同, StringBuffer 和 String builder 类型的对象可以反复修改,而不会留下大量新的未使用的对象。
StringBuilder 类是从 Java 5 开始引入的,StringBuffer 和 StringBuilder 之间的主要区别是StringBuilders 方法不是线程安全的(不同步)。
建议尽可能使用 StringBuilder,因为它比 StringBuffer 更快。但是,如果需要线程安全,最好的选择是 StringBuffer 对象。
示例
public class Test {
public static void main(String args[]) {
StringBuffer sBuffer = new StringBuffer("test");
sBuffer.append(" String Buffer");
System.out.println(sBuffer);
}
}
这个将产生以下结果 -
输出
test String Buffer
StringBuffer 方法
这里是 StringBuffer 类支持的重要方法列表 -
序号. | 方法和说明 |
---|---|
1 | public StringBuffer append(String s) 更新调用该方法的对象的值。该方法接受 boolean、char、int、long、Strings 等。 |
2 | public StringBuffer reverse() 该方法反转调用该方法的 StringBuffer 对象的值。 |
3 | public delete(int start, int end) 删除从以下位置开始的字符串起始索引直到结束索引。 |
4 | public insert(int offset, int i) 此方法在偏移量提到的位置插入字符串 s。 |
5 | replace(int start, int end, String str) 此方法将此 StringBuffer 的子字符串中的字符替换为指定 String 中的字符。 |
以下是其他方法的列表(除了 set 方法),它与 String 类非常相似 -
序号. | 方法及说明 |
---|---|
1 | int capacity() 返回字符串缓冲区的当前容量。 |
2 | char charAt(int index) 返回由索引参数指示的当前由字符串缓冲区表示的序列的指定字符. |
3 | void EnsureCapacity(intminimumCapacity) 确保缓冲区的容量至少等于指定的最小值。 |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 字符从此字符串缓冲区复制到目标字符数组 dst 中。 |
5 | int indexOf(String str) 返回指定子字符串在该字符串中第一次出现的索引。 |
6 | int indexOf(String str, int fromIndex) 返回此字符串中指定子字符串第一次出现的索引,从指定索引开始。 |
7 | int lastIndexOf(String str) 返回此字符串中指定子字符串最右侧出现位置的索引。 |
8 | int lastIndexOf(String str, int fromIndex) 返回此字符串中最后一次出现的指定子字符串的索引。 |
9 | int length() 返回该字符串的长度(字符数) |
10 | void setCharAt(int index, char ch) 此字符串缓冲区指定索引处的字符设置为 ch。 |
11 | void setLength(int newLength) 设置此字符串缓冲区的长度。 |
12 | CharSequence subSequence(int start, int end) 返回一个新的字符序列,即该序列的子序列。 |
13 | String substring(int start) 返回一个新字符串,其中包含当前包含在此 StringBuffer 中的字符子序列。子字符串从指定索引处开始,一直延伸到 StringBuffer 的末尾。 |
14 | String substring(int start, int end) 返回一个新字符串,其中包含当前包含在此 StringBuffer 中的字符子序列。 |
15 | String toString() 转换为表示此数据的字符串字符串缓冲区。 |