一.
说完了添加,现在说一下删除。用操作容器的方法进行删除的话,方法不外乎两个,要么是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); } }