2.2.2StringBuilder和StringBuffer

    技术2022-07-12  82

    StringBuilder

    为了高效拼接字符串,java标准库提供了StringBuilder,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder中新增字符时,不会创建新的临时对象。 扩展,StringBuilder可以进行链式操作

    public static void main(String[] args) { var sb = new StringBuilder(1024); sb.append("Mr ") .append("Bob") .append("!") .insert(0, "Hello, "); System.out.println(sb.toString()); }

    这种情况产生的原因是因为该append()方法每次返回的都是该实例本身即this。 因此,我们也可以仿造做出链式操作。

    StringBuffer

    这是java早期的一个StringBuilder线程安全版本,其用来保证多个StringBuffer共同运行也能线程安全,但带来效率低下的问题。 因此相对的StringBuilder不是线程安全的,但执行速度较快。 所以在要求线程安全时,用到StringBuffer,而没有要求线程安全,推荐使用StringBuilder。 StringBuilder和StringBuffer两者操作是相同的,构造器和方法也相同

    方法

    public StringBuffer append(String s);//将指定的字符串追加到此字符序列。 public StringBuffer reverse();// 将此字符序列用其反转形式取代。 public delete(int start, int end);//移除此序列的子字符串中的字符。 public insert(int offset, int i);//将 int 参数的字符串表示形式插入此序列中。 public replace(int start, int end, String str);//使用给定 String 中的字符替换此序列的子字符串中的字符。

    String与以上两者的区别

    String对象被创建之后,该对象不可修改,因此引入了上边两个类,用做String的修改。 StringBuilder执行效率高,线程不安全。 StringBuffer执行效率低,线程安全。

    Processed: 0.009, SQL: 9