StringBuffer详解

StringBuffer详解

StringBuffer

实际的开发中,如果需要进行字符串的频繁拼接,会有什么问题?java中的字符串是不可变的,每一次拼接都会产生新字符串,会占用大量的方法区内存,造成内存空间的浪费。因此需要通过java.lang.StringBuffer类来解决

package com.yupeng.stringbuffer;

public class StringBufferTest01 {
    public static void main(String[] args) {
        // 创建一个字符串缓冲区对象,实际是一个容量为16的byte[]数组
        StringBuffer stringBuffer = new StringBuffer();
        // 拼接字符串,调用append(),追加方法
        stringBuffer.append("a");
        stringBuffer.append("b");
        stringBuffer.append(100);
        stringBuffer.append(true);
        stringBuffer.append(3.14);
        System.out.println(stringBuffer); // ab100true3.14
    }
}

在创建StringBuffer对象的时候,尽可能给定一个预估的较大的初始化容量,减少底层数组的扩容次数。

StringBuilder

使用StringBuilder也可以完成字符串的拼接

package com.yupeng.stringbuffer;

public class StringBufferTest02 {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("a");
        stringBuilder.append("b");
        stringBuilder.append(100);
        stringBuilder.append(true);
        stringBuilder.append(3.14);
        System.out.println(stringBuilder); // ab100true3.14
    }
}

StringBuilder和StringBuffer的区别:StringBuffer中的方法有synchronized关键字修饰,表示在多线程环境下运行时安全的,StringBuilder反之。

©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页