StringBuffer和StringBuilder

时间:2024-4-8    作者:老大夫    分类:


总的来说

就是StringBuffer和StringBuilder比String增加了可更改性质
StringBuffer和StringBuilder的区别就是jdk5.0后增加的Stringbuilder线程不安全,没有synchronized修饰,但是它的效率要高。

三各类的对比

String StringBuffer StringBuilder
不可变的字符序列 可变的字符序列 可变的字符序列
jdk1.0声明的,线程安全有synchronized修饰,效率低 jdk5.0声明的,线程不安全,效率高
底层使用char[] (jdk8.0之前)后来用byte[ ] 底层使用char[] (jdk8.0之前)后来用byte[ ] 底层使用char[] (jdk8.0之前)后来用byte[ ]

可变性的源码分析

  1. String
    String s1=new String("hello");//char[] value=new char[3]{'h','e','l','l','o'};

String不可变,变动就会创建一个新的字符串

  1. StringBuilder

    abstract class AbstractStringBuilder implements Appendable, CharSequence {
    /**
     * The value is used for character storage.
     */
    char[] value;//存储字符序列
    
    /**
     * The count is the number of characters used.
     */
    int count;//实际存储字符的个数,初始化字符数组长度16,count为0

    定义在了父类AbstractStringBuilder之中
    比String更加灵活,需要频繁增删改的操作就要使用StringBuffer和StringBiulder

常用方法

StringBuffer和StringBuilder的常用方法

增:append 、
删:delete(int start, int end) 、deleteCharAt(int index)
改:replace(int start, int end, String str) 、setCharAt 、reverse
查:charAt
插入:insert(在指定索引插入原位置字符向右移动)
长度:length(存储数据的长度)

执行效率对比

StringBuilder > StringBuffer >String


扫描二维码,在手机上阅读

推荐阅读: