StringBuffer类(增删改查及长度可变原理)

1 package cn.itcast.p2.stringbuffer.demo; 2 3 public class StringBufferDemo { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 /* 8 * StringBuffer:就是字符串缓冲区。 9 * 用于存储数据的容器。(数组也是个容器) 10 * 特点: 11 * 1,长度是可变的。 12 * 2,可以存储不同类型数据。 13 * 3,最终要转成字符串进行使用。 14 * 4,可以对字符串修改 15 * 16 * 既然是一个容器。应该具备什么功能呢? 17 * 1,添加: 18 * StringBuffer append(data); 19 * StringBuffer insert(index,data) 20 * 2,删除: 21 * StringBuffer delete(start,end);包含头不包含尾 22 * StringBuffer deleteCharAt(int index);删除指定位置的元素 23 * 3,查找: 24 * char charAt(index); 25 * int indexOf(string); 26 * int lastIndexOf(string); 27 * 4,修改: 28 * StringBuffer replace(start,end,string) 29 * void setCharAt(index,char); 30 * 增删改查 C(create)U(update)R(read)D(delete) 31 */ 32 bufferMethodDemo(); 33 34 bufferMethodDemo_1(); 35 36 bufferMethodDemo_2(); 37 38 bufferMethodDemo_3(); 39 40 bufferMethodDemo_4(); 41 } 42 private static void bufferMethodDemo_4() { 43 StringBuffer sb = new StringBuffer("abce"); 44 45 //sb.setLength(2);//ab 46 //sb.setLength(0);//相当于清空缓冲区 47 //sb.setLength(10); 48 System.out.println("sb:"+sb); 49 System.out.println("len:"+sb.length()); 50 51 System.out.println(sb.reverse());//ecba 52 } 53 private static void bufferMethodDemo_3() {//修改 54 StringBuffer sb = new StringBuffer("abce"); 55 sb.replace(1, 3, "nba"); 56 sb.setCharAt(2, 'q'); 57 System.out.println(sb); 58 } 59 private static void bufferMethodDemo_2() {//删除 60 StringBuffer sb = new StringBuffer("abce"); 61 62 sb.delete(1, 3); 63 //清空缓冲区。 64 sb.delete(0, sb.length()); 65 sb = new StringBuffer();//重新做缓冲区 66 System.out.println(sb); 67 } 68 private static void bufferMethodDemo_1() {//插入 69 StringBuffer sb = new StringBuffer("abce"); 70 sb.insert(2, "qq"); 71 System.out.println(sb.toString()); 72 73 } 74 public static void bufferMethodDemo() {//添加 75 //创建缓冲区对象。 76 StringBuffer sb = new StringBuffer(); 77 78 StringBuffer s1 = sb.append(4); 79 s1.append(false); 80 System.out.println(sb==s1);//true 81 82 s1.append("ha").append("ha"); 83 System.out.println(sb); 84 s1.insert(1, "haha"); 85 System.out.println(sb); 86 87 } 88 /* 89 * StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为16个字符 90 * 91 * StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。 92 * 93 * 两个的区别就是看具体适用哪个,用StringBuffer()一旦超过16 就延长不仅开辟空间又要进行运算 94 * 初始化一个指定容量的就可以避免这个情况。 95 */ 96 97 }