zoukankan      html  css  js  c++  java
  • StringBuffer与Stringbuilder

    1.方法

    增:append(xxx)
    删:delete(int start,int end)
    改:setCharAt(int n,char ch) /replace(int start,int end,String str)
    查:charAt(int n)
    插:insert(int offset,xxx)
    长度:length()
    遍历:for()+charAt()/toString()
    

    2面试题:String,StringBuffer,StringBuilder三者的异同?
    不同点:
    String:不可变的字符序列;
    StringBuffer:可变的字符序列;线程安全的,效率偏低。
    StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高。
    相同点:底层都是char[]存储

    源码分析:
    String str=new String();//char[] value=new char[0];
    String str1=new String("abc");//char[] value=new char[]{'a','b','c'};
    
    StringBuffer sb1=new StringBuffer();//char[] value=new char[16];底层创建了一个长度是16的数组。
    System.out.println(sb1.length());//0
    sb1.append('a');//value[0]='a';
    sb1.append('b');//value[1]='b';
    
    StringBuffer sb2=new StringBuffer("abc");//char[] value=new char["abc".length()+16];
    
    //问题一:System.out.println(sb2.length());//3  有效长度
    //问题2:扩容问题:如果要添加的数据底层数组存不下了,那就需要扩容底层的数组
    默认情况下,扩容为原来容量的2倍+2,同时将原有数组中的元素复制到新的数组中。
    
      指导意义:开发中建议大家使用:StringBuffer(int capacity)//开始时就设置长度,避免扩容
      或者StringBuilder(int capacity)
  • 相关阅读:
    iOS工作笔记(十二)
    隐藏底部导航栏tabbar
    SDWebImage的使用及图片不改变问题的解决
    NSString转化为NSDictionary
    makeObjectsPerformSelector用法
    iOS中点与像素
    iOS动画的简单介绍
    Pods安装时卡在Updating local specs repositories界面时的处理
    使用uicollectionView时需要注意的问题
    Sublime Text 3 自定义配置快捷键
  • 原文地址:https://www.cnblogs.com/2719610441qqcom/p/14627377.html
Copyright © 2011-2022 走看看