Java笔记 - StringBuffer类

StringBuffer就是字符串缓冲区,是用于存储数据的容器。缓冲区里面的容器其实还是数组,只不过是把数组封装了,对外提供方法。缓冲区构造函数StringBuffer()构造一个不带字符的字符串缓冲区,初始容量为16个字符。就是说只要一new对象,就产生了一个长度为16的数组。

StringBuffer特点:
1. 长度是可变的
2. 可以存储不同类型数据
3. 最终要转成字符串进行使用
4. 可以对字符串进行修改

可变长度数组的原理:
虽然字符串缓冲区的长度可变,但是数组的长度是不变的。字符串缓冲区的初始长度为16,如果出现了17个字符,系统就会复制一个数组,长度是原先的两倍,然后把原来的16个字符按照固定的位置原封不动挪到新数组上,然后再给第17个角标元素赋值。

  • 构造方法
    StringBuffer():构造一个初始容量为16个字符的字符串缓冲区
    StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容

  • 一般方法

    1. 添加
      StringBuffer append(date):可以接收不含byte和short的基本数据类型。将这些数据转换成字符串,然后将这些字符添加到缓冲区末端
      StringBuffer insert(int offset,date):在指定的角标处添加字符
    2. 删除
      StringBuffer delete(int start,int end):包含开始,不包含结尾
      StringBuffer deleteCharAt(int index):删除指定角标的元素
    3. 查找
      char charAt(int index):查找字符串缓冲区某角标的元素
      int indexOf(String str):查找字符串在字符串缓冲区中的角标,如果不存在则返回-1
      int indexOf(String str, int fromIndex):从某角标开始查找字符串在字符串缓冲区中的位置
      int lastIndexOf(String str):倒叙查找
      int lastIndexOf(String str, int fromIndex):从某位置倒叙查找
    4. 修改
      StringBuffer replace(int start, int end, String str):
      void setCharAt(int index, char ch):
      void setLength(int newLength):
      例:

      StringBuffer sb = new StringBuffer("abcda");
      sb.insert(3, "ab");
      System.out.println(sb);
      System.out.println(sb.charAt(2));
      System.out.println(sb.indexOf("ab"));
      System.out.println(sb.indexOf("ab",  2));
      System.out.println(sb.lastIndexOf("ab",2));
      sb.replace(1, 3, "nba");
      System.out.println(sb);
      sb.setCharAt(2, 'q');
      System.out.println(sb);
      sb.setLength(10);
      System.out.println(sb);
      sb.delete(0,sb.length());//清空缓冲区
      System.out.println(sb);
      

      输出结果:
      abcabda
      c
      0
      3
      0
      anbaabda
      anqaabda
      anqaabda□□
      //清空缓冲区

StringBuilder
StringBuffer从JDK1.0版本开始,线程安全,运行速度较慢
StringBuilder从JDK1.5版本开始,线程不安全,运行速度快,优先使用StringBuilder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值