StringBuffer进行字符串拼接
构造一个其中不带字符的字符串缓冲区,初始容量为16个字符
可以进行大量字符串拼接操作
public class StringBufferText {
public static void main(String[] args) {
//创建一个初始化容量为16byte[] 数组(字符串缓冲区对象)
StringBuffer stringBuffer = new StringBuffer();
//拼接字符串,以后字符串统一调用append()方法
//append是追加的意思。
stringBuffer.append("a");
stringBuffer.append("b");
stringBuffer.append(3.14);
stringBuffer.append(true);
//append方法底层在进行追加的时候,如果byte数组满了,会自动扩容。
stringBuffer.append(100L);
System.out.println(stringBuffer);
}
}
如何优化StringBuffer的性能
在创建StringBuffer的时候尽可能给定一个初始化容量。
最好减少底层数组的扩容次数。预估计一下,给一个大一些初始化容量。
关键点:给一个合适的初始化容量。可以提高程序的执行效率。
//指定初始化容量的StringBuffer对象(字符串缓冲区对象)
StringBuffer sb = new StringBuffer(100);
StringBuffer和StringBuilder的区别
StringBuffer中的方法都有: synchronized关键字修饰。表示StringBuffer在多线程环境下运行是安全的。
StringBuilder中的方法都没有: synchronized关犍字修饰,表示StringBuilder在多线程环境下运行是不安全的。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。