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一样

  • 相关阅读:
    牛客练习赛16
    AtCoder Regular Contest 096
    基础实验4-2.8 部落 (25分)--并查集
    进阶实验4-3.3 完全二叉搜索树 (30分)
    进阶实验4-3.2 Windows消息队列 (25分)--建堆
    基础实验4-2.5 关于堆的判断 (25分)---建小顶堆
    基础实验4-2.4 搜索树判断 (25分)--二叉搜索树
    基础实验4-2.1 树的同构 (25分)--二叉树
    案例4-1.7 文件传输 (25分)--并查集
    进阶实验3-3.1 求前缀表达式的值 (25分)--堆栈
  • 原文地址:https://www.cnblogs.com/SuKiWX/p/12911759.html
Copyright © 2011-2022 走看看