zoukankan      html  css  js  c++  java
  • StringBuffer&StringBuilder

    一、StringBuffer&StringBuilder的作用

        当我们字符串拼接时候:需要在内存中不断new 新的String对象,会造成大量的内存浪费和过多的GC,所以引入StringBulider和StringBuffer

    string str = "123";
    for (int i = 0; i < 100000; ++i){
    
                str += i;
          }
    

     String在java中是不可变长的,一旦初始化就不能修改长度,简单的字符串拼接其实是创建新的String对象,再把拼接后的内容赋值给新的对象,在频繁修改的情况下会频繁创建对象,而StringBuilder则不会,从头到尾只有一个实例对象

        其实StringBuilder在append时并不是用String存储,而是放到一个value的char数组中,字符串是固定长度的,而数组是可以扩容的,这样就不需要不停创建对象了

    二、StringBuilder使用

    StringBuilder str = new StringBuilder();
    
     
    
            DateTime begin = DateTime.Now;
    
            for (int i = 0; i < 100000; ++i){
    
                str.Append(i);
            }

     其他常用的方法:

    1、append(String str)/append(Char c):字符串连接
    System.out.println("StringBuilder:"+strB.append("ch").append("111").append('c'));
    //return "StringBuilder:ch111c"

    2、toString():返回一个与构建起或缓冲器内容相同的字符串
    System.out.println("String:"+strB.toString());
    //return "String:ch111c"

    3、appendcodePoint(int cp):追加一个代码点,并将其转换为一个或两个代码单元并返回this
    System.out.println("StringBuilder.appendCodePoint:"+strB.appendCodePoint(2));
    //return "StringBuilder.appendCodePoint:ch111c"

    4、setCharAt(int i, char c):将第 i 个代码单元设置为 c(可以理解为替换)
    strB.setCharAt(2, 'd');
    System.out.println("StringBuilder.setCharAt:" + strB);
    //return "StringBuilder.setCharAt:chd11c"

    5、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)
    System.out.println("StringBuilder.insertString:"+ strB.insert(2, "LS"));
    //return "StringBuilder.insertString:chLSd11c"
    System.out.println("StringBuilder.insertChar:"+ strB.insert(2, 'L'));
    //return "StringBuilder.insertChar:chLLSd11c"

    6、delete(int startIndex,int endIndex):删除起始位置(含)到结尾位置(不含)之间的字符串
    System.out.println("StringBuilder.delete:"+ strB.delete(2, 4));
    //return "StringBuilder.delete:chSd11c"

    三、StringBuffer

    用法和StringBuilder一样

  • 相关阅读:
    【集训队作业2018】不可名状
    【UTR #3】量子破碎
    【清华集训2016】你的生命已如风中残烛
    【清华集训2016】如何优雅地求和
    玩转大数据系列之Apache Pig高级技能之函数编程(六)
    ElasticSearch入门之彼行我释(四)
    玩转大数据系列之Apache Pig如何与Apache Solr集成(二)
    玩转大数据之Apache Pig如何与Apache Lucene集成
    如何学好一门编程语言或技术?
    2015年春节往事小记
  • 原文地址:https://www.cnblogs.com/SuKiWX/p/12911759.html
Copyright © 2011-2022 走看看