`
bingzhen66
  • 浏览: 36627 次
文章分类
社区版块
存档分类
最新评论

38.黑马程序员-String、StringBuffer、StringBuilder比较

 
阅读更多

------- android培训java培训、期待与您交流! ----------

一、StringBuffer
1.概念
  • StringBuffer是字符串缓冲区、是一个容器(数据可以改变)。
  • 而且长度是可以改变的。
  • 可以直接操作多个数据类型。
  • 最终会通过toString方法变成字符串。
  • 定义:StringBuffer sb = new StringBuffer();
2.功能
  • CRUD
  • 存储:
    • 存储 StringBufferappend(数据):将指定作为参数添加到已有数据的结尾处。
      • StringBuffer sb = new StringBuffer();
      • StringBuffer sb1 = sb.append(34); //注意sb==sb1,指向同一个缓冲区。
    • 插入StringBuffer insert(index,数据):可以将数据插入到指定index位置。
  • 删除
    • 删除 StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
    • 删除指定位置字符 StringBuffer deleteCharAt(index):删除指定位置的字符。
    • 清空缓冲区 sb.delete(0,lenth());
  • 获取
    • char charAt(int index)
    • int indexOf (String str)
    • int lastIndexOf(String str)
    • int length()
    • String substring (int start , int end)
  • 修改
    • StringBuffer replace (start , end ,string)
    • void setCharAt(int index , char ch)
  • 反转
    • stringBuffer reverse();
  • 将缓冲区的数据存储到指定数组中,dst为目的。
    • void getchars(int srcBegin , int srcEnd, char[]dst, int dstBegin)
二、StringBuilder
  • 概念: StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
  • StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
    StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
    StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。




三、StringBuffer与StringBuilder(JDK1.5)差别
  • StringBuffer是线程安全的可变字符序列,线程同步, StringBuilder不保证同步。
    • 到底用哪一个?建议单线程用StringBuilder,多线程用StringBuffer。
  • 一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的
四、总结
  • (1).如果要操作少量的数据用 = String
  • (2).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
  • (3).多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics