Java笔记23——StringBuffer和StringBuilder类

本文介绍StringBuffer与StringBuilder类,这两种类允许我们多次修改字符串而不产生额外未使用的对象。文章详细解释了StringBuffer类的方法,包括存储、删除、获取、修改、反转等操作,并指出在多数情况下StringBuilder性能更优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

当对字符串进行修改的时候,我们需要用到StringBuffer和StringBuilder类。和之前的String不一样,StringBuffer和StringBuilder类的对象能够被多次修改,并且不产生新的未使用的对象。

StringBuffer类

StringBuffer类是线程安全的可变字符序列。一个类似于String的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但是通过某些方法可以用于改变该序列的长度和内容。

StringBuffer类可将字符串用于多个线程。可以在必要的时候对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
注意:在大部分情况下是:StringBuilder > StringBuffer
###StringBuffer类的常用方法

 /***StringBuffer是一个容器,长度可变,可以直接操作字符串,用toString方法变为字符串 **/
 1.存储
	 1)public StringBuffer append(String sb);//将指定参数数据在容器末尾,返回值也是StringBuffer
	 例子:
	 StringBuffer sb = new StringBuffer(//可以加str);
     StringBuffer sb1=ab.append(数据) //数据可以任何基本数据类型
  注:此时sb == sb1他们是同一对象,意思是可以不用新建sb1直接 sb.append(数据) 使用时之后接使用sb
  
	2)insert();// 插入
    sb.insert(index ,数据);
2.删除
        sb.delete(start ,end);  //删除start到end的字符内容
//注意:这里的所有包含index的操作都是含头不含尾的

        sb.deleteCharAt(index);//删除指定位置的字符
//清空StringBuffer缓冲区
        sb=new StringBuffer();
        sb.delete(0,sb.length());
3.获取
    char c = sb.charAt(index);//获取index上的字符
    int i = sb.indexOf(char)://获取char字符出现的第一次位置
    //与 String 中的获取方法一致参考前面

4.修改                  String类中无次操作方法
    sb =sb.replace(start,end,string)//将从start开始到end的字符串替换为string;
    sb.setCharAr(index ,char);//将index位置的字符变为新的char
5.反转     sb.reverse();//将sb倒序
6. getChars(int srcBegin,int srcEnd,char[] ch,int chBegin)
//将StringBuffer缓冲区中的指定数据存储到指定数组中

StringBuilder类

StringBuilder类是Java5新增的一个可变的字符序列。这个类提供一个与StringBuffer兼容的API,但是不保证同步。这个被设计作为StringBuffer类的一个简易的替换,用于字符串缓冲区被单个线程使用的时候。建议优先采用该类,因为在大多数实现中,它比 StringBuffer类速度要快。两者的方法基本相同,所以StringBuilder类就不写了,参考上面StringBuffer类的常用方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值