常用类专题StringBufferStringBuilder

本文详细介绍了Java中的StringBuffer和StringBuilder类,包括它们的特性、转换方法、常用操作以及与String的区别。StringBuffer是线程安全的,适合多线程环境,而StringBuilder效率更高,适用于单线程。通过示例代码展示了如何进行字符串的增删改查操作,以及两者之间的转换。同时,对比了String的不可变性及其效率。
摘要由CSDN通过智能技术生成

1 StringBuffer

1.1 StringBuffer相关特征

  • StringBuffer代表可变的字符序列,可以对字符串内容进行增删

  • StringBuffer是一个容器,方法与String基本相同,但是可变长度的

  • StringBuffer的直接父类是AbstractStringBuilder,实现了Serializable接口,可以序列化。在父类中有属性 char[] value,不是final的,用value来存放字符串内容,存放在堆中。所以变化(增加/删除)不用每次都更换地址(即不是每次创建新对象),所以效率高于String

  • StringBuffer是final类,不能被继承。

1.2 String和StringBuffer相互转换

public class StringBufferBaseMethod {
    public static void main(String[] args) {
        //String --> StringBuffer
        String name = "yorick";
        //1.构造函数传入String类型数据,返回StringBuffer类型数据
        StringBuffer sb1 = new StringBuffer(name);
        System.out.println(sb1);
        //2.使用append方法
        StringBuffer sb2 = new StringBuffer();
        sb2.append(name);
        System.out.println(sb2);

        //StringBuffer ---> String
        StringBuffer sb3 = new StringBuffer("hello world");
        //1.使用StringBuffer提供的toString方法
        String str1 = sb3.toString();
        System.out.println(str1);
        //2.使用String的构造方法
        String str2 = new String(sb3);
        System.out.println(str2);
    }
}

1.3 StringBuffer常见方法

public class StringBufferBaseMethod {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("hello");
        //1.增
        sb.append(",");
        sb.append("world").append("!");
        System.out.println(sb);
        //2.删 [start,end)
        sb.delete(0,5);
        System.out.println(sb);
        //3.替换 [start,end)
        sb.replace(1,6,"yorick");
        System.out.println(sb);
        //4.查找子串第一次出现的索引,找不到返回-1
        int index = sb.indexOf("yorick");
        System.out.println(index);
        //5.插入
        sb.insert(0,"hello");
        System.out.println(sb);
        //6.长度
        System.out.println(sb.length());
    }
}

2 StringBuilder

2.1 StringBuilder相关特征

  • 可变的字符序列,停规和StringBuffer兼容的API,但是不保证同步,用在字符串缓冲区被单个线程使用的时候,比StringBuffer效率高

  • StringBuilder 继承 AbstractStringBuilder 类,实现了Serialzable接口,可以被序列化,实现网络传输或者保存至文件。StringBuilder是final类,不能被继承

3 String、StringBuffer和StringBuilder比较

  1. StringBuilder和StringBuffer类似,均代表可变的字符序列,而且方法也一样
  2. String是不可变字符序列,效率低,但是复用率高
  3. StringBuffer是可变字符序列,效率较高,线程安全
  4. StringBuilder是可变字符序列,效率最高,线程不安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城老湿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值