String,StringBuffer,StringBuilder的异同
- String是不可变的字符序列,而StringBuffer和StringBuilder是可变的字符序列。
- StringBuffer是线程安全的,但效率低,而StringBuilder是非线程安全的,效率高。
- 这三者底层的数据结构都是char型数组。
String,StringBuffer,StringBuilder的底层数据结构是一样的,为什么StringBuffer,StringBuilder是可变的字符序列?
1. StringBuffer,StringBuilder在创建char[]时,会有一个默认的数组长度16。
2. 当字符长度超过默认的长度时,数组会动态扩容,会扩容为原容量的2倍+2,再将原数组中的元素放到新数组中。