Java中StringBuffer的用法,常用方法,以及与String的相同和不同之处

在 Java 语言中,由于 String 类是final 类型的,所以使用 String 定义的字符串是一个常量,因此其内容和长度都是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。源码如下(由于类中内容过多,内容已省略)

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence{}

如果不想创建新的字符串就对字符串进行修改,可以使用 StringBuffer 类(也称字符串缓冲区)来操作字符串。

StringBuffer 类和 String 类最大的区别在于StringBuffer类的内容和长度都是可以改变的。StringBuffer 类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,因此并不会产生新的 StringBuffer 对象

StringBuffer的作用原理:StringBuffer是可变字符序列,其内部实现是一个字符数组,初始时有一个默认的大小(通常为 16)。

当进行字符串操作时,它会检查内部字符数组的剩余空间是否足够容纳新添加的字符。如果足够,就直接将新的字符添加到字符数组的合适位置;如果不足,StringBuffer 会自动创建一个更大的新字符数组(通常是原来容量的一定倍数加上新添加字符的长度),然后将原字符数组中的内容复制到新数组中,再继续进行添加操作。

用法及常用方法:

package oneHundredDayPlan.twoDay;

//StringBuffer
public class Two {
    public static void main(String[] args) {
        String a = "a";
        StringBuffer s = new StringBuffer("I LOVE YOU");
        s.append("!");//添加字符到StringBuffer对象中末尾
        System.out.println(s);//I LOVE YOU!
        s.insert(10," SO MUCH");//在StringBuffer对象中的指定位置插入字符串
        System.out.println(s);//I LOVE YOU SO MUCH!
        s.deleteCharAt(18);//移除StringBuffer对象中的指定位置的字符
        System.out.println(s);//I LOVE YOU SO MUCH
        s.delete(10,18);//删除StringBuffer对象中指定范围的字符或字符串
        System.out.println(s);//I LOVE YOU
        s.replace(7,10,"WORLD!");//将StringBuffer对象中指定范围的字符或字符串用新的字符串进行替换
        System.out.println(s);//I LOVE WORLD!
        s.setCharAt(12,'@');//修改StringBuffer对象中指定位置处的字符
        System.out.println(s);//I LOVE WORLD@
    }
}

与String的相同点: 都用于处理文本数据

不同点:其实在上面也已经提到过了。String定义的字符串是一个常量,一旦创建,其长度和内容都是不可变的。如果想要对字符串进行修改的话,只能创建新的字符串。而StringBuffer避免了这个问题,他是可变的,可以通过相应的方法直接在原对象上进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值