Java中,拼接字符串可以使用+号,但是字符串在java中是不可变的,每一次拼接都会产生新的字符串,所以如果进行频繁的字符串拼接,会占用大量的方法区内存,这时候就需要使用JDK中自带的java.lang.StringBuffer/java.lang.StringBuilder进行字符串拼接:

public class StringBufferTest {
    public static void main(String[] args) {
        // 在创建StringBuffer的时候尽可能给定一个初始化容量
        // 最好减少底层数组的扩容次数
        StringBuffer s1 = new StringBuffer(100);
        // append追加
        s1.append("abc");
        s1.append(120);
        s1.append(1.2);
        s1.append(1L);
        System.out.println(s1);//abc1201.21
    }
}
public class StringBuilderTest {
    public static void main(String[] args) {
        StringBuilder s1 = new StringBuilder();
        s1.append(123);
        s1.append("abc");
        s1.append(false);
        System.out.println(s1);
    }
}
StringBuffer中的方法都有:synchronized关键字修饰,表示StringBuffer在多线程环境下运行是安全的 StringBuilder中的方法都没有:synchronized关键字修饰,表示StringBuilder在多线程环境下运行是不安全的

发表评论