StringBuffer,and,StringBuilder

来源:互联网 发布:剑灵数据互通查询 编辑:程序博客网 时间:2024/05/18 01:34
/*StringBuffer是字符串缓冲区。是一个容器。特点:1.长度是可变化的。2.可以对内容通过制定方法进行修改3.容器对象一般都会具备对容器中的元素进行操作的功能。增删改查。4.缓冲区可以存储不同类型的数据。5.最终缓冲区存储完的数据都会通过toString方法变成字符串。起一个临时存储的作用C create U update R read D delete1,存储。StringBuffer append():将指定数据作为参数添加到已有数据结尾处。StringBuffer insert(index,数据):可以将数据插入到指定index位置。2,删除。StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。StringBuffer deleteCharAt(index):删除指定位置的字符。3,获取。char charAt(int index) int indexOf(String str) int lastIndexOf(String str) int length() String substring(int start, int end)  4,修改。StringBuffer replace(start,end,string);void setCharAt(int index, char ch) ;5,反转。StringBuffer reverse(); 6,将缓冲区中指定数据存储到指定字符数组中。void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 7,设置字符序列的长度。setLength()JDK1.5 版本之后出现了StringBuilder.StringBuffer是线程同步。StringBuilder是线程不同步。以后开发,建议使用StringBuilder升级三个因素:1,提高效率。2,简化书写。3,提高安全性。*/


原理:
字符串缓冲区中维护了一个“可变长度的数组”
解释:其实就是超出内部数组长度后,新建数组长度是原数组的1.5,1.75,1.x等的倍数,并将原数组的数据复制到新数组中,并将新的元素也添加到新数组中

什么时候用字符串缓冲区呢?
数据很多,个数无法确定,类型无法确定,只要最后都转换成字符串
就是用StringBuffer这个容器。

使用的局限性:
1.必须最终转换成字符串
2.无法对存储进来的元素进行单独操作,因为存储进来的元素都变成字符串


class Demo{}class StringBufferDemo {public static void main(String[] args) {//method_update();StringBuilder sb = new StringBuilder("abcdef");char[] chs = new char[6];sb.getChars(1,4,chs,1);//将for(int x=0; x<chs.length; x++){sop("chs["+x+"]="+chs[x]+";");}draw(3,6);draw(8,9);//StringBuilder sb1 = new StringBuilder();//sb1.append(new Demo()).append(new Demo());//sop("sb1="+sb1);}public static void method_update(){StringBuffer sb  = new StringBuffer("abcde");//sb.replace(1,4,"java");sb.setCharAt(2,'k');sop(sb.toString());}public static void method_del(){StringBuffer sb  = new StringBuffer("abcde");//sb.delete(1,3);//清空缓冲区。//sb.delete(0,sb.length());//sb.delete(2,3);sb.deleteCharAt(2);sop(sb.toString());}public static void method_add(){StringBuffer sb = new StringBuffer();//sb.append("abc").append(true).append(34);//StringBuffer sb1 = sb.append(34);//sop("sb==sb1:"+(sb==sb1));sb.insert(1,"qq");sop(sb.toString());//abctrue34//sop(sb1.toString());}public static void sop(String str){System.out.println(str);}public static void draw(int row,int col){StringBuilder sb = new StringBuilder();for(int x=0; x<row; x++){for(int y=0; y<col; y++){sb.append("*");}sb.append("\r\n");}sop(sb.toString());}}




0 0
原创粉丝点击