StringBuffer类与StringBuilder类

StringBuffer类

概述:

        我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String
对象,既耗时,又浪费空间。而 StringBuffer 就可以解决这个问题
线程安全的可变字符序列
        默认底层为char数组 长度为16。
 public StringBuffer() {
        super(16);
    }

  AbstractStringBuilder(int capacity) {
        value = new char[capacity];
    }

当向StringBuffer中添加内容时,将内容添加到底层的数组中,该数组没有被final修饰。

当数组装满是,会创建一个新数组,将新数组地址赋给底层数组,StringBuffer对象不会变。

添加功能:

append():向数组末尾追加内容。

insert():向指定位置添加内容。

 StringBuffer stringBuffer1 = new StringBuffer("abcdefg");
        stringBuffer1.append("aa");
        stringBuffer1.insert(2, "abc");

删除功能:
deleteCharAt():删除指定位置内容。

delete():删除指定区间内容,包含开始,不包含结束位置。 

StringBuffer stringBuffer1 = new StringBuffer("abcdefg");
stringBuffer1.delete(0, 2);
stringBuffer1.deleteCharAt(1);

替换功能:

replace():替换指定区间内容。

反转功能::
reverse():逆序字符串。

StringBuffer stringBuffer1 = new StringBuffer("abcdefg");
        stringBuffer1.replace(0, 2, "123");
        stringBuffer1.reverse();

截取功能:

substring():从指定位置开始截取,返回值为string。

String s1 = new String(stringBuffer1);
        stringBuffer1.substring(3);
        System.out.println(stringBuffer1);
        System.out.println(s1);

StringBuilder类:多线程不安全,  可变字符串

String,StringBuffer,StringBuilder三者区别

String:底层都是数组实现, final char[ ]  值不能改变,改变后会创建一个新的对象,如果我们在实际开发过程中需要对字符串进行频繁的修改,不要使用String,否则会造成内存空间的浪费。

StringBuffer:线程安全,可变字符串 char[ ] ,StringBuffer几乎所有的方法都使用synchronized实现了同步,线程比较安全,在多线程系统中可以保证数据同步,但是效率比较低;而StringBuilder 没有实现同步,线程不安全,在多线程系统中不能使用 StringBuilder,但是效率比较高。

StringBuilder:线程不安全,可变字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值