Java中的StringBuffer类

42 篇文章 0 订阅

StringBuffer类概述

当我们对字符串进行拼接操作的时候,每次拼接,都会创建一个新的String对象,这样的话既耗时又浪费空间。
而StringBuffer可以解决这个问题。
在这里插入图片描述
StringBuffer类是线程安全的可变字符序列,是一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

构造方法

StringBuffer类重载了构造方法,且含有空参构造。
在这里插入图片描述

StringBuffer的常用方法

capacity()方法
在这里插入图片描述
该方法获取当前容量。理论值

length()方法
在这里插入图片描述
获取长度即字符数。实际值

StringBuffer类的添加功能

append()方法

可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身。
在这里插入图片描述
上述方法是将String类型的数据添加到字符串缓冲区里,然后返回字符串缓冲区本身。

insert()方法

在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身。

在这里插入图片描述
上述方法是在指定位置将String类型的数据插入到字符串缓冲区里,并返回字符歘缓冲区本身。

StringBuffer类的删除功能

deleteCharAt()方法
在这里插入图片描述
该方法删除指定位置的字符,并返回本身。

delete()方法
在这里插入图片描述
该方法删除从指定位置开始指定位置结束的内容,并返回本身。

StringBuffer类的替换和反转功能

替换功能:
replace()方法
在这里插入图片描述
该方法是将从start开始到end的字符串用str替换,并返回本身。

反转功能:
reverse()方法
在这里插入图片描述
该方法进行字符串的反转,并返回本身。

StringBuffer的截取功能

substring()方法
在这里插入图片描述
从指定位置截取到末尾,返回值类型不再是StringBuffer本身,而是String类型。

在这里插入图片描述
从指定位置开始到结束位置进行截取,包括开始位置,不包括结束位置。返回值类型不再是StringBuffer本身,而是String类型。

StringBuffer和String的相互转换

String到StringBuffer

  1. 通过构造方法
  2. 通过append()方法

StringBuffer到String

  1. 使用substring方法
  2. 通过构造方法
  3. 通过toString()方法

String和StringBuffer分别作为参数传递

  • String作为参数传递:String虽然是引用类型,但是它是一个常量,所以在做传递的时候,完全可以将其看成基本数据类型数据进行传递,即值传递。
  • StringBuffer作为参数传递,是引用传递,形参的改变会影响实参。

StringBuffer和StringBuilder的区别

StringBuilder类是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值