StringBuffer类
1.StringBuffer
StringBuffer是对String的增强,代表可变的字符系列,可以对字符串内容进行增删,很多方法与String相同,但是StringBuffer是可变长度的。
StringBuffer是一个容器。
2.StringBuffer类图
3.
(1)StringBuffer的直接父类是AbstractStringBuilder。
(2)StringBuffer可以串行化,即可以进行网络传输。
(3)StringBuffer是一个final类,不可以被继承。
(4)AbstractStringBuilder有属性char[]value,不是final,该value数组存放字符串内容,存放在堆中。
4.
StringBuffer保存的是字符串变量,里面的值是可以更改的,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率要比String高。
5.构造器方法
(1)StringBuffer();
new StringBuffer();
创建一个大小为16的char []存放字符内容
(2)StringBuffer(int capacity);
构造一个不带字符,但具有指定初始容量的字符串缓冲区,即对char[]的的大小进行指定。
(3)StringBuffer(String str);
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容(字符内容大小+16)
6.StringBuffer和String的转换
String→StringBuffer
(1)可以直接使用构造器,如5.(3)
(2)使用append 方法
StringBuffer stringbuffer = bew StringBuffer();
stringbuffer = stringbuffer.append(str);
StringBuffer→String
StringBuffer stringbuffer = bew StringBuffer();
String str = stringbuffer.toString();
2.使用构造器
String str = String(stringbuffer);
7.StringBuffer 常用方法
(1)append
追加
StringBuffer str = new StringBuffer("hello");
str.append('!');
System.out.println(str);
//输出hello!
//在hello后面追加!
(2)delete
删除
StringBuffer str = new StringBuffer("hello");
str.delete(start,end);
//删除start-end的字符,包含下标start,不包含end
(3)replace
替换
StringBuffer str = new StringBuffer("hello");
str.replace(start,end,"hello");
//替换start-end的内容为hello;不包含end
(4)indexOF
查找
int indexOf = s.indexOf("hello");
//在s中查找hello,,返回首字符下标
(5)insert
插入
s.insert(9,"hello");
//在索引为9的内容插入hello,索引为9 的内容后移
(6)length
获取长度