String、StringBuilder、StringBuffer

String的两种创建方式:

1.String s1 = "abc"

首先去常量池找"abc",如果不存在,就在常量池创建"abc",然后在中开辟s1,存放"abc"的内存地址

2.String s2=new String("abc")

首先去常量池找"abc",如果不存在,就创建"abc",然后在中开辟空间存放String的一个对象,然后在中开辟s2,其中存放中String对象的内存地址

 

三者异同:

String底层:char[]

StringBuilder底层:char[]

StringBuffer底层:char[]

String追加会new一个新的String

StringBuffer和StringBuilder追加会判断是否超过容量,超过则会扩容(size*2+2,特殊:扩容过大时直接变为最终大小),初始容量为初始值长度+16。

StringBuffer和StringBuilder唯一区别:前者线程安全(牺牲了效率:方法使用了synchronized)

posted @ 2021-04-11 15:27  wsZzz1997  阅读(32)  评论(0编辑  收藏  举报