目录
StringBuffer类
StringBuffer类的Diagram
基本介绍
-
java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删
-
很多方法与String相同,但StringBuffer是可变长度的
-
StringBuffer是一个容器
-
StringBuffer的直接父类是 AbstractStringBuilder
-
StringBuffer 实现了 Serializable接口,即StringBuffer的对象可以串行化
-
在父类中 AbstractStringBuilder 有属性 char[] value; ,不是final类型,该value数组用来存放字符串的内容,是存放在堆中的。
-
StringBuffer 是final类,不能被继承
String VS StringBuffer
-
String保存的是字符串常量,里面的值不能修改,每次String类的更新实际上就是更改地址(即每次创建新的对象),String的引用指向新的字符串常量对象,效率较低。//private final char value[];
-
StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer类的更新实际上可以更新内容,不用每次更新地址。只有当数组空间不够时,才会去更改地址。(即不是每次创建新的对象) // 效率较高。
StringBuffer的构造器
-
StringBuffer():默认创建一个大小为 16的 char[],用于存放字符内容
StringBuffer stringBuffer = new StringBuffer();
//构造器
public StringBuffer() {
super(16);
}
-
StringBuffer(int capacity):指定数组 char[] 的大小
StringBuffer stringBuffer1 = new StringBuffer(100);
//构造器
public StringBuffer(int capacity) {
super(capacity);
}
-
StringBuffer(String str):通过给一个String 创建 StringBuffer,char[] 大小就是 str.length() + 16
StringBuffer stringBuffer2 = new StringBuffer("hello");
//构造器
public StringBuffer(String str) {
super(str.length() + 16);
append(str);
}
String和StringBuffer的相互转换
String -------> StringBuffer
-
方式1:
String str = "hello tom";
StringBuffer stringBuffer = new StringBuffer(str);
-
方式2:
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);
StringBuffer-------> String
-
方式1:
StringBuffer stringBuffer = new StringBuffer("你好");
String s = stringBuffer.toString();
-
方式2:
StringBuffer stringBuffer = new StringBuffer("你好");
String s1 = new String(stringBuffer);
StringBuffer类的常见方法
-
append():相当于 ”+“ ,将指定的字符串追加到此字符序列的后面
public class Demo01 {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("hello");
s.append(',');
s.append("张三").append("舅舅");
System.out.println(s);
}
}
-
delete():删除指定区间的字符串,左闭右开
public class Demo01 {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("hello");
s.delete(2,4);
System.out.println(s);
}
}
-
replace():替换指定区间的字符串,左闭右开
public class Demo01 {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("hello,张三");
s.replace(6,8,"周杰");
System.out.println(s);
}
}
-
indexOf():获取字符(或字串)在字符串中第一次出现的索引,索引从0开始,如果找不到,则返回 -1
public class Demo01 {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("hello,张三");
int a= s.indexOf("张三");
int b = s.indexOf("l");
int w = s.indexOf("w");
System.out.println(a);
System.out.println(b);
System.out.println(w);
}
}
-
insert():在指定索引位置插入字符(串),原来该索引的字符(串)自动后移
public class Demo01 {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("hello,张三");
StringBuffer a = s.insert(2, "Jay");
System.out.println(a);
}
}
-
length():获取字符的个数,即字符串的长度