美文网首页
常用类专题——StringBuffer和StringBuilde

常用类专题——StringBuffer和StringBuilde

作者: 攻城老狮 | 来源:发表于2021-05-25 21:57 被阅读0次

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是可变字符序列,效率最高,线程不安全

相关文章

网友评论

      本文标题:常用类专题——StringBuffer和StringBuilde

      本文链接:https://www.haomeiwen.com/subject/rethsltx.html