Java升级三种情况: 1.提高效率 2.提高安全性 3.简化书写 String(字符串): 特性:一旦被初始化,就不能被改变 StringBuilder(线程不同步) 升级的结果(提高效率) 将StringBuilder实例用于多线程是不安全的。如需要这样的同步,建议使用StringBuffer; 单线程使用StringBuilder效率高; StringBuffer(线程同步,安全的) StringBuffer是字符串缓冲区 是一个容器(数据类型不确定,数据个数不确定,用StringBuffer比数组方便) 特点: 1.长度是可以变化的 2.可以直接操作多个数据类型(append 添加什么类型都可以) 3.最终会通过toString方法变成字符串
1.存储: StringBuffer append():将制定数据作为参数添加到已有数据的结尾处 StringBuffer insert(index,数据):可以将数据插入制定在index位置 2.删除 StringBuffer delete(strat,end):删除缓冲区的数据,包含start,不包含end StringBuffer deleteCharAt(index):删除指定位置的字符 3.获取 char charAt() 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(字符数组的起始位置)) JDK1.5版本之后出现了StringBuilder StringBuffer 是线程同步 StringBuilder是线程不同步(效率高) 以后开发建议使用StringBuilder
下面是一小段代码来体现上面的方法:
class StringBufferDemo { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); StringBuffer sb1 = sb.append("abc").append(34).append("def"); //方法调用链 返回值为StringBuffer对象 sop(sb.toString());//返回结果为abc34def sop(sb1.toString());//返回结果为abc34def //sb.delete(1,3); sop(sb.toString()); //清空缓冲区 sb.delete(0,sb.length()); //删除单个元素 sb.deleteCharAt(2); //sb.replace(1,3,"hello");//替换 //sb.setCharAt(2,'s'); //sop(sb.toString()); char[] ch = new char[6]; sb.getChars(0,4,ch,1); for(int x=0;x<ch.length;x++) { sop("ch["+x+"]=:"+ch[x]); } } public static void sop(String str) { System.out.println(str); } } |