StringBuffer和StringBuilder簡介
我們先講一下StringBuffer
StringBuffer是一個字符串緩沖區(qū)轩勘,如果需要頻繁的對字符串進行拼接時,建議使用StringBuffer怯邪。
工作原理
StringBuffer的底層是char數(shù)組,如果沒有明確設(shè)定,則系統(tǒng)會默認創(chuàng)建一個長度為16的char類型數(shù)組绊寻,在使用時如果數(shù)組容量不夠了,則會通過數(shù)組的拷貝對數(shù)組進行擴容,所以在使用StringBuffer時最好預測并手動初始化長度,這樣能夠減少數(shù)組的拷貝,從而提高效率。
String與StringBuffer的區(qū)別?
String是不可變字符序列榛斯,存儲在字符串常量池中
StringBuffer的底層是char數(shù)組观游,系統(tǒng)會對該數(shù)組進行擴容
/ /如果沒有明確指出,系統(tǒng)默認長度是16
stringBuffer sb =new StringBuffer() ;
//建議預估字符串的長度驮俗,并且聲明StringBuffer的長度
StringBuffer sb1 = new stringBuffer (100) ;
/ /如果傳入String類型懂缕,則初始化長度為string的length+16
StringBuffer sb2= new StringBuffer ("monkey") ;
使用StringBuffer進行字符串拼接
//指定位置添加
sb1. insert(4, "1024") ;|
System. out. println (sb1) ;
//將指定位置刪除
sb1.delete(4, 8) ;
Sys tem. out. println(sb1) ;
StringBuilder
StringBuilder和StringBuffer的區(qū)別
通過API可以看到StringBuilder和StringBuffer里面的方法是一樣的, 那他們有什么區(qū)別呢?
StringBuffer是jdk1.0版本中加入的王凑,是線程安全的搪柑,效率低
StringBuilder是jdk5版本加入的,是線程不安全的索烹,效率高
看公司項目所需的如果你需要線程安全的就選擇StringBuffer工碾,如果是需要高效率的就選擇StringBuilder