StringBuffer:
可以允许修改的字符序列。new Stringbuffer()的时候,默认分配16个字符的字符缓存区。需要修改字符序列的内容或者长度,一般有append、inset方法可以修改字符序列的内容与长度
1.说明
当字符串需要进行修改的时候,特别是字符串经常改变的情况下,就可以使用StringBuffer。原因:如果使用String 进行修改操作的话,那么堆内存中会保留大量多余的对象在内存中,可能会造成线程执行效率低,极大影响了程序的性能问题。
2.特点
2.1.线程安全
多个方法(append、inset)都是使用了jdk的线程同步机制关键词synchronized,所以在字符序列修改的时候,都能保存每次操作是有顺序的执行,不会出现抢先执行的情况
2.2.初始化时,不可以空赋值
2.3.内容、长度可变
StringBuffer中的value数组是没有使用fianl关键词修饰的,所以value数组内的值是可以改变的。
扩容机制:
jdk1.6源码分析,由源码分析得出:如果字符串长度大于初始化长度(16),那么StringBuffer就会进行扩充容量==》当前容量大小加1乘以2