StringBuffer类
458字约2分钟
2025-11-21
StringBuffer类相当于是String的增强类StringBuffer代表的是可变的字符序列,就是说可以对字符串的类容进行修改,不用像String那样要重新创建StringBuffer是final类不能被继承StringBuffer是将字符串存放在父类中的字符数组中,而该数组不是final类型的,所以更改StringBuffer的字符串是不会重新创建新的对象
String 和 StringBuffer 区别
String变量的 “赋值” 操作,本质是让变量指向新的String对象(原有对象不变)。- 由于
String的不可变性,任何 “修改” 字符串内容的操作(包括赋值、拼接、替换等)都会产生新对象。 - 唯一例外是复用字符串常量池中的现有对象时,不会创建新对象,但这是引用复用,而非修改。
如果需要频繁修改字符串内容,建议使用 StringBuilder 或 StringBuffer,它们是可变的,可避免频繁创建对象带来的性能损耗
String与StringBuffer转换
// String 转 StringBuffer
String a = "a";
// 方法一
StringBuffer b = new StringBuffer(a);
// 方法二
StringBuffer c = new StringBuffer();
c.append(a);
// StringBuffer 转 String
StringBuffer c = new StringBuffer(a);
// 方法一
String a1 = c.toString();
// 方法二
String a2 = new String(c);StringBuffer方法
追加(append)
StringBuffer a = new StringBuffer("he");
a.append("llo");
a.append(",world");
System.out.println(a);// 结果
hello,world删除(delete)
StringBuffer a = new StringBuffer("hello,world");
// 去掉下标 2 ~ 5 - 1 范围的字符
a.delete(2, 5);
System.out.println(a);// 结果
he,world修改(replace)
StringBuffer a1 = new StringBuffer("hello,world");
a1.replace(2, 5, "iii");
System.out.println(a1);// 结果
heiii,world插入(insert)
StringBuffer a2 = new StringBuffer("hello,world");
// 在下标为2的字符前添加内容
a2.insert(2,"iii");
System.out.println(a2);// 结果
heiiillo,world长度(length)
StringBuffer a3 = new StringBuffer("hello,world");
System.out.println(a3.length());// 结果
11