对StringBuilder的理解

来源:互联网 发布:手机淘宝卖家联系方式 编辑:程序博客网 时间:2024/06/06 09:23

     前段时间听领导说他面试了一个工作了5年的java程序员,被问到StringBuilder是怎么实现字符串长度的变化的,把别人问的蒙住了。忙完了手上的事情,来回忆一下,虽然平时用到的机会不是很多,但是这些基础的只是还是不能被遗忘掉的。

   先上一段测试代码

    public static void main(String[] args) {
       StringBuilder sb = new StringBuilder(); // 创建一个字符串生成器
       sb.append("dce");// 给字符串生成器中追加字符串
       sb.insert(1, "ab");//给字符串生成器中指定位置插入字符串
       System.out.println(sb.toString());
  }

    这段代码大家都不陌生,学过java的人会很容易写出来。

   StringBuilder 是一个可变的字符序列,用在字符串缓冲区被单个线程使用的时候。

   其主要的使用方法是如上述代码中的append和insert。这两个方法都是可以被重载的,参数可以是任何类型。每个方法都可以将给定的数据转换成字符串,然后将该字符串字符追加或者插入到字符串生成器中。append方法始终将字符添加到生成器的最末端,而insert方法则在指定的点添加字符。

   每个字符串生成器都是有一定的容量的,只要字符串生成器所包含的字符序列的长度没有超出此容量,就没有必要再分配新的缓冲区。如果生成器内部的缓冲区溢出,则此容量自动增大。

    通过上面的描述,我们很清楚就明白了。StringBuilder使用时,首先会创建一个一定容量的字符串生成器,然后通过append和insert方法来增加字符串生成器中字符串的长度。

    当然会有同学问了,append和insert实现了字符串生成器中字符串长度的增加,怎么减少字符串的长度呢?是的,StringBuilder也有delete方法。delete(int start,int end),两个参数分别是删除字符串生成器中字符串的起始位置和结束为止。

    接着上面的代码再补充一段:

   public static void main(String[] args) {
     StringBuilder sb = new StringBuilder();
     sb.append("dce");
     sb.insert(1, "ab");
    System.out.println(sb.toString());
    sb.delete(0, 2);
    System.out.println(sb.toString());
 }

   输出结果不出大家所料:

   dabce
   bce

  将StringBuilder的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用StringBuffer。



1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝货到退款怎么办 淘宝收不到货怎么办 淘宝不处理投诉怎么办 实体店不能退货怎么办 顾客无理由退货怎么办 京东衣服质量问题怎么办 买家退货要运费怎么办 卖家不给退运费怎么办 淘宝申请退款卖家不退怎么办 网购商家报复怎么办 淘宝退货店家不同意怎么办 淘宝退货不同意退款怎么办 运费险没收到怎么办 地税逾期未申报怎么办 转转买家发到付怎么办 捡到苹果手机打不开怎么办 捡到指纹手机打不开怎么办 捡到手机密码打不开怎么办 遇到假苹果售后怎么办 做微商被骗囤货怎么办 代理如果不做了怎么办 微商加盟费不退怎么办 手机背面发霉了怎么办 手机电池被换了怎么办 苹果6pcpu发热怎么办 手机漏电怎么办手发麻 iphone主板烧了怎么办 ioS13.1抹掉数据怎么办 阿迪达斯 实体店 假货 怎么办 椰子v2鞋底发黄怎么办 椰子鞋 白色脏了怎么办 微信照片过期怎么办 开淘宝店快递怎么办 淘宝下架cmcc怎么办 别人说你穿假鞋怎么办 浅色裤子染色了怎么办 鞋扣不粘了怎么办 船鞋穿久了会臭怎么办 aj1鞋头开胶怎么办 遇到会搞事的家长怎么办 衣服撞衫了怎么办