美文网首页
常用类专题——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