一.
说完了添加,现在说一下删除。用操作容器的方法进行删除的话,方法不外乎两个,要么是delete,要么是remove。
一般是delete.xxxx,或者是remove.xxxx。delete貌似包含头不包含尾。
DOS结果显示为ae。现在想要将字符串缓冲区里的内容全部删除,这个动作叫做清空缓存区。
缓冲区清空后,容器还在。也可以直接重新定义sb字符串缓冲区,(相当于重新定义了一个缓冲区,原先的缓冲区废弃了)
但是,比较起来还是delete方法比较靠谱。
除了删除方法,还有查找方法。想在缓冲区中查找一些东西出来,比如想要查角标上的位置的话,可以用下面的方法。这些都是和字符串一样的方法。
这缓冲区对象里面还有一个方法,叫做修改。
返回的还是当前缓冲区,
将1角标到3角标替换成自己需要的字符串。结果为anbae,这个也是尾部不变。很奇怪啊,看解释也没说尾数不能变化。
还有修改单个角标上的元素的方法,这个返回类型是void,不返回本类对象。
这里面还有一些其它的方法,展示一下,
表面意思看是设置长度,
这里sb.setLength(0)的动作和清空缓冲区是一个动作。如果设置成sb.setLength(10),除了原有的四个字符外,它会往剩下的位置中放入空字符。
还有reverse方法,就是倒过来打印输出字符串,就是反转。
package stringbuffer.demo;
public class StringBufferDemo {
public static void main(String[] args) {
/*
* StringBuffer:就是字符串缓冲区
* 用于存储数据的容器。
* 特点
* 1.长度是可变的
* 2.可以存储不同类型的数据。
* 3.最终要转成字符串进行使用。
* 4.可以对字符串进行修改
*
* 既然是一个容器,应该具备什么功能呢?
* 1.添加:
* StringBuffer append(data):
* StringBuffer insert(index,data);
* 2.删除:
* StringBuffer delete(start,end):包含头,不包含尾
* StringBuffer deleteCharAt(int index):删除指定位置的元素。
* 3.查找:
* char charAt(index);
* int indexof(string);
* int lastIndexof(string);
* 4.修改:
* StringBuffer replace(start,end,string);
* void setCharAt(index,char);
* 5.增删改查 c(create) U(update) R(read) D(dete)
*
*
* StringBuffer();
* 线程安全。
*
*
*/
// bufferMethodDemo();
bufferMethodDemo2();
}
public static void bufferMethodDemo2() {
StringBuffer sb = new StringBuffer("abcdefgh");
sb.delete(1, 3);//删除元素,包含头,不包含尾
//清空缓冲区
// sb.delete(0, sb.length());
//sb = new StringBuffer//用这种方法清空内存,不合适,浪费内存
System.out.println(sb);//adefgh
sb.deleteCharAt(0);
System.out.println(sb);//defgh
sb.replace(0, 2, "gao");
System.out.println(sb);//gaofgh
sb.setCharAt(0, 'h');
System.out.println(sb);//haofgh
}
public static void bufferMethodDemo() {
//创建缓冲区对象。
StringBuffer sb = new StringBuffer();
// StringBuffer s1 = sb.append(4);
// System.out.println(sb==s1);//true
sb.append(4).append(false).append("haha");
sb.insert(2, "搞");
// sb.append(true);
//缓冲区是存储数据的。用的话还需要转成字符串。
System.out.println(sb);
}
}