StringBuffer类
在实际开发当中,我们经常会使用到字符串连接的操作,如果用String来操作,则使用“+”号完成字符串的连接操作。使用String连接字符串,代码性能会非常低,因为String的内容不可改变。解决这个问题的方法是使用StringBuffer。StringBuffer类原码分析
在使用String进行字符串连接时,每一步连接都会产生一个临时字符串对象,
连接的越多,内存消耗越大,我们应该避免这种情况发生。
解决:
使用StringBuffer来解决字符串连接的问题。
StringBuffer的源码分析:
(1)使用字符数组实现数据存储
(2)默认初始容量是16(数组的大小)
(3)在追加数据方法(append(...))中实现容量的扩充
(4)扩充的算法:原来长度*2+2
(5)线程安全,在多线程访问时使用,效率低
在使用StringBuffer时,建议根据实际要存储的数据大小,来初始化容量,避免
字符数组扩充次数,影响性能。
StringBuffer sb = newStringBuffer(100);
StringBuilder类:
StringBuffer的兄弟StringBuilder:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer要快。
(1)功能与StringBuffer相同
(2)线程不安全,在单线程时建议使用,效率高
StringBuffer与StringBuilder的父类AbstractStringBuilder