StringBuffer 和 StringBuilder

来源:互联网 发布:csgo n卡优化 编辑:程序博客网 时间:2024/05/16 17:59
String str= "abc"; 常用的创建字符串对象   (不可变的字符串序列,定义出来就像一个常量)
  
 StringBuffer   *可变*的字符序列   (理解为存放字符串的集合或*容器*)
 //创建了一个容器  自增长   默认初始长度为16 个字符
 StringBuffer sb=new StringBuffer();
 sb.append();//添加   虽然可以添加多种类型   但是会*自动转换*成字符串类型
 
 
  StringBuffer sb=new StringBuffer("aaa"); 初始化自带字符串 aaa
   StringBuffer sb=new StringBuffer(20);   初始化自带默认指定容量
   //append();返回的是StringBuffer本身 
   StringBuffer sb1=new StringBuffer("aaa"); 1
   StringBuffer sb2=new StringBuffer(false); 
   StringBuffer sb3=new StringBuffer(5); 
   sb1.append(3.5);
   syso(sb1);
   syso(sb2);
   syso(sb3);
   因为append返回的是类本身,不会再开辟空间  sb1  sb2  sb3   只是类对象的引用(指向同一块空间)   
   都是操作的同一块空间   所以内存上的内容变化   引用也会跟着变化   三个输出结果一样
   sb.capacity();  返回当前容量     引用返回的容量也一样
   sb.delete("aaa"); 移除aaa
   sb.deleteCharAt(2);移除第二个位置的元素
   sb.delete(0,2); 移除 包含头不包含尾 
   //将此序列复制到目标的字符数组中
   sb.getChars(int srcBegin, int srcEnd,char[]dst,int dstBegin);
   sb.insert(0,"aaa"); 从第零个位置插入aaa
   sb.reverse();   字符串反转 (a到z排序  反转后变成 z到a 排序)
   
   StringBUffer在线程方面的用处,要是把数据放到里面,相当于加同步(共享数据)
   线程安全,效率低一些,每次都要判断一下同步
   
   StringBuilder  线程不安全  效率高一些   
   主要是用Builder   不安全概率极低  主要考虑效率 
   方法和StringBuffer一样的用法
   *********添加返回的数据都是其本身
原创粉丝点击