一:基本介绍
- 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() + 16
StringBuffer 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);
} }
```