StringBuffer
普通的字符串拼接会浪费大量的空间
String s = "";
//这样做会给java的方法区字符串常量池带来很大的压力
for (int i = 0; i < 100; i++) {
s+=i;
System.out.println(s);
/**
* 如果以后需要进行大量的字符串拼接操作,建议使用Java中自带的:
* java.lang.StringBuffer
* java.lang.StringBuilder
*
* 如何优化StringBuffer的性能?
* 在创建StringBuffer的时候尽可能给定一个初始化容量。
* 最好减少底层数组的扩容次数。预估计一下,给一个大一点的初始化容量。
*/
public class StringBufferTest02 {
public static void main(String[] args) {
//创建一个初始化容量为16的但没有任何字符的字符串缓冲区
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("我有一只小毛驴,我怎么也不骑");
stringBuffer.append(3.014);
//append方法底层在进行追加的时候,如果byte数组满了,会自动扩容
//String和StringBuffer都会创建一个byte数组 不同的是String的修饰符是final
System.out.println(stringBuffer);
//指定初始化容量的StringBuffer对象(字符串缓冲区对象)
StringBuffer sb = new StringBuffer(100);
sb.append("147725899566232");
System.out.println(sb);
}
}
StringBuffer和StringBulider的区别
StringBuffer中的方法都有:synchronized关键字修饰。表示StringBuffer在多线程环境下运行是安全的。
StringBulider中的方法都没有:synchronized关键字修饰。表示StringBuffer在多线程环境下运行时不安全的。
StringBuffer是线程安全的
StringBulider是非线程安全的