当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
1、初始化
@Test
public void testDemo() {
StringBuilder sb = new StringBuilder(10);
sb.append("runoob..");
System.out.println(sb); // runoob
sb.append("!");
System.out.println(sb); // runoob..!
sb.insert(8, "java");
System.out.println(sb); // runoob..java!
// 删除下标之间的数据,前闭后开
sb.delete(5, 8);
System.out.println(sb); // runoojava!
StringBuilder builder = new StringBuilder("菜鸟教程官网:");
builder.append("www")
.append(".runoob")
.append(".com");
System.out.println(builder); // 菜鸟教程官网:www.runoob.com
StringBuilder reverse = builder.reverse();
System.out.println(reverse);
// 使用给定 String 中的字符替换此序列的子字符串中的字符。
StringBuilder builder1 = new StringBuilder("abcdef");
StringBuilder replace = builder1.replace(0, 2, "abc");
System.out.println(replace); // abccdef
}
2、StringBuilder常用的方法
@Test
public void test() {
StringBuilder builder = new StringBuilder("abcdefghi");
// 返回当前容量
System.out.println(builder.capacity()); // 25
char c = builder.charAt(1); // b
// void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin),
// 将字符从此序列复制到目标字符数组 dst。
char[] dst = {'h', 'e', 'l', 'l', 'o'};
builder.getChars(0, 3, dst, 1);
for (char c1 : dst) System.out.print(c1 + " "); // h a b c o
// 返回第一次出现的指定子字符串在该字符串中的索引。
System.out.println(builder.indexOf("def")); // 3
// 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
System.out.println(builder.indexOf("def", 2)); // 3
// 返回最右边出现的指定子字符串在此字符串中的索引。
System.out.println(builder.lastIndexOf("def")); // 3
// 返回 String 对象中子字符串最后出现的位置。
System.out.println(builder.lastIndexOf("def", 2)); // -1
// 字符数
System.out.println(builder.length()); // 9
// 将给定索引处的字符设置为 ch。
builder.setCharAt(1, 'c');
// 设置字符序列的长度。
builder.setLength(10);
// CharSequence subSequence(int start, int end)
// 返回一个新的字符序列,该字符序列是此序列的子序列。
System.out.println(builder.subSequence(0, 3)); // abc
// 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
String substring = builder.substring(0, builder.length());
System.out.println(substring); // accdefghi
// 返回此序列中数据的字符串表示形式。
System.out.println(builder.toString()); // accdefghi
}
3、StringBuilder 和 String 之间的转化
@Test
public void convert() {
String str = new String("abc");
StringBuilder builder = new StringBuilder(str);
StringBuilder sb = builder.append("abc");
System.out.println(sb);
String s = sb.toString();
System.out.println(s);
}