因为Java中的字符串是不可变的,每一次拼接都会产生新字符串,这样会占用大量的方法区内存,造成空间内存的浪费。
因此我们可以使用JDK中自带java.lang.StringBuilder java.lang.StringBuffer。
* StringBuffer和StringBuilder的区别?
StringBuffer是线程安全的
StringBuilder是非线程安全的
* 如何提高StringBuffer的性能?
在创建StringBuffer的时候尽可能给定一个初始化容量,给一个合适的初始化容量可以提高程序的执行效率。
以下代码加深理解:
public class Test3 {
public static void main(String[] args) {
//创建一个初始化容量为16的byte[]数组。(字符串缓冲区对象)
StringBuffer stringBuffer = new StringBuffer();
//以后拼接字符串统一调用append()方法,append是追加的意思
stringBuffer.append(12);
stringBuffer.append("a");
stringBuffer.append(1.2);
stringBuffer.append(true);
//append()方法在追加的时候,如果byte[]数组满了会自动扩容
System.out.println(stringBuffer);
//指定初始化容量的StringBuffer对象。(字符串缓冲区对象)
StringBuffer s = new StringBuffer(10);
s.append("a");
s.append("b");
s.append("c");
s.append("d");
s.append("e");
System.out.println(s);
}
}
输出结果为: