一:基本介绍
- java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。
- 很多方法与String相同,但StringBuffer是可变长度的。
- StringBuffer是一个容器。

public class Test {public static void main(String[] args) {//1. StringBuffer 的直接父类 是 AbstractStringBuilder//2. StringBuffer 实现了 Serializable, 即StringBuffer的对象可以串行化//3. 在父类中 AbstractStringBuilder 有属性 char[] value,不是 final// 该 value 数组存放 字符串内容,引出存放在堆中的//4. StringBuffer 是一个 final 类,不能被继承//5. 因为 StringBuffer 字符内容是存在 char[] value, 所有在变化时// 不用每次都更换地址(即不是每次创建新对象), 所以效率高于String}}
二:String 和 StringBuffer区别
- String保存的是字符串常量,里面的值不能更改,每次String类的更新实防上就是更改地址
- 效率较低 //private final char value [ ] ;
StringBuffer的更新实际上可以更新内容,不用每次更新地址
效率较高 //char [ ] value ; //这个放在堆.
三:StringBuffer的构造器

public class Test {public static void main(String[] args) {//1.创建一个大小为16的 char[],用于存放字符内容StringBuffer stringBuffer = new StringBuffer();//2.通过构造器指定char[]大小StringBuffer stringBuffer1 = new StringBuffer(50);//3.通过给一个String 创建StringBuffer// char[]大小就是 str.length() + 16StringBuffer stringBuffer2 = new StringBuffer("sakura");}}
四:StringBuffer 和String的相互转换
1:String -> StringBuffer
public class Test {public static void main(String[] args) {//方式一:使用构造器//注意:返回的才是StringBuffer对象,对str本身没有影响String str = "sakura";StringBuffer stringBuffer3 = new StringBuffer(str);//方式二:使用append方法StringBuffer stringBuffer = new StringBuffer();stringBuffer = stringBuffer.append(str);}}
2:StringBuffer -> String
public class Test {public static void main(String[] args) {//方式一:使用toString ( ) 方法StringBuffer stringBuffer4 = new StringBuffer("sakura");String s = stringBuffer4.toString();//方式二:使用构造器String str1 = new String(stringBuffer4);}}
五:StringBuffer类常用方法
public class Test2 {public static void main(String[] args) {StringBuffer s = new StringBuffer("sakura");//增s.append("LF");System.out.println(s);//删//删除索引为>=start && <end 处的字符s.delete(2,4);System.out.println(s);//改//使用 sakura 替换 索引 1-2 的字符 [1,2)s.replace(1,2,"sakura");System.out.println(s);//查int indexOF = s.indexOf("ra");System.out.println(indexOF);//插s.insert(0,"冷");System.out.println(s);//长度System.out.println(s.length());}}
六:StringBuffer类测试题
```java
public class Test {
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);
String Price = scanner.next(); //64134134.34 StringBuffer stringBuffer = new StringBuffer(Price); int b = stringBuffer.indexOf(“.”);
if (b != -1){
for (int i = b; i >=3; i-=3) {stringBuffer = stringBuffer.insert(i-3,",");}
}else {
int last = stringBuffer.length();for (int i = last; i > 3; i=i-3) {stringBuffer = stringBuffer.insert(i-3,",");}
} System.out.println(stringBuffer);
} }
```
