String、StringBuffer、StringBuild
三者的区别
String:不可变的字符序列;底层数组用final修饰(底层通过使用final和private修饰char[]数组实现了线程安全)
StringBuffer:可变的字符序列;线程安全,效率低(底层通过加同步锁实现了线程安全)
StringBuild:可变的字符序列;jdk5.0新增的,线程不安全,效率高
三者底层都是char[]数组
StringBuffer和StringBuffer:底层用char[]数组存储,父类是AbstractStringBuilder
StringBuffer怎么实现的线程安全
StringBuffer中的方法使用同步锁的方法

添加时候的底层
添加的时候创建了一个长度为16的char[]数组
如果添加的时候本身就有是三个字符添加
StringBuffer sb = new StringBuffer("abc");
此时会创建3+16长度的地层数组
扩容问题:
容量超过16时,底层会扩容,扩容为原来的2倍+2,再将原来的内容复制到这
可以指定容量
创建的时候可以指定底层数组的长度

浙公网安备 33010602011771号