Java--StringBuffer和StringBuilder
1.StringBuffer和StringBuilder是什么?
是一个字符串缓冲区
2.工作原理
预先在内存中申请一块空间,以容纳字符序列。如果预留的空间不够用,则进行自动扩容,以容纳更多字符序列。
3.StringBuffer,StringBuilder和String的区别是什么?
String是不可变的字符序列,存储在字符串常量池中。
StringBuffer底层是一个char数组,但是该数组是可变的。并且可以自动扩容。
4.StringBuffer和StringBuilder的默认初始容量是16(16个字符,32字节)
5.StringBuffer和StringBuilder如何进行优化呢?
最好在创建StringBuffer之前,预测StringBuffer的存储字符数量,然后再创建StringBuffer的时候采用指定初始化容量的方式创建StringBuffer。
因为数组在扩容的时候,采用的机制是创建另一个更大的数组,然后把初始数组复制进去。提前指定初始容量可以减少底层数组的拷贝,提高效率
7.当字符串频繁拼接时推荐使用StringBuffer和StringBuilder。可以使用append方法。
8.StringBuffer和StringBuilder和有什么区别?
StringBuffer是线程安全的。(可以在多线程的环境下使用不会出现问题)
StringBuilder是非线程安全的。(在多线程环境下使用可能出现问题)