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,再将原来的内容复制到这

可以指定容量

创建的时候可以指定底层数组的长度

posted @ 2021-11-21 20:17  刘小呆  阅读(82)  评论(0)    收藏  举报