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是非线程安全的。(在多线程环境下使用可能出现问题)

 

posted @ 2020-06-27 17:26  徐阶  阅读(136)  评论(0编辑  收藏  举报