Java中的StringBuffer
类是可变字符序列,它提供了许多方法来执行字符串操作,如追加、插入、替换和删除等,而不会像String
类那样每次修改都会创建新的对象。以下是StringBuffer
类的一些常用方法,并给出相应的代码运行示例:
1.初始化和追加(append)
// 初始化一个 StringBuffer 对象
StringBuffer sb = new StringBuffer();
// 追加字符串
sb.append("Hello ");
sb.append("World");
// 输出结果: "Hello World"
System.out.println(sb.toString());
2.插入(insert)
sb.insert(6, "beautiful "); // 在索引6处插入"beautiful "
// 输出结果: "Hello beautiful World"
System.out.println(sb.toString());
3.查找(indexOf 和 lastIndexOf)
int firstIndex = sb.indexOf("World");
int lastIndex = sb.lastIndexOf("World");
System.out.println("First occurrence of 'World': " + firstIndex);
System.out.println("Last occurrence of 'World': " + lastIndex);
4.子字符串(substring)
String subStr = sb.substring(7, 18); // 截取从索引7到17的子串
// 输出结果: "beautiful W"
System.out.println(subStr);
5.获取指定位置字符(charAt
char c = sb.charAt(19);
// 输出结果: 'o'
System.out.println(c);
6. 删除(delete)
sb.delete(0, 5); // 删除从索引0开始到索引4(不包括)的子串
// 输出结果: "beautiful World"
System.out.println(sb.toString());
7.替换(replace)
sb.replace(0, sb.length(), "Greetings, ");
// 输出结果: "Greetings, beautiful World"
System.out.println(sb.toString());
8.反转字符串(reverse)
sb.reverse();
// 输出结果: "dlroW ,olleGtueb erauqilteb"
System.out.println(sb.toString());
注意,尽管在多线程环境下,
StringBuffer
是线程安全的,但在单线程环境下,对于性能要求较高的情况,可以使用非线程安全但速度更快的StringBuilder
类代替。
StringBuffer
类本身并不直接提供用于遍历字符串的内置迭代器或forEach循环方法,因为它本质上是一个可变字符序列容器,而不是集合或数组。然而,由于它继承自AbstractStringBuilder
,你可以通过调用charAt(int index)
方法配合一个传统的 for 循环来遍历其包含的字符:
9.遍历
StringBuffer sb = new StringBuffer("Hello, World!");
for (int i = 0; i < sb.length(); i++) {
char c = sb.charAt(i);
System.out.println(c);
}
这段代码会依次输出 StringBuffer
中每个字符。
如果你想使用更现代的 Java 遍历方式(如Java 5引入的增强型for循环),则需要先将其转换为字符数组或列表:
// 转换为字符数组并遍历
char[] chars = sb.toString().toCharArray();
for (char c : chars) {
System.out.println(c);
}
// 或者转换为List<Character>并遍历
List<Character> charList = new ArrayList<>();
for (char c : sb.toString().toCharArray()) {
charList.add(c);
}
for (Character c : charList) {
System.out.println(c);
}
尽管如此,这些做法其实都是间接实现遍历,并非
StringBuffer
类自身提供的专门用于遍历的方法。在实际应用中,根据需求选择合适的遍历方式即可。