String,StringBuffer和StringBuilder区别?
String是字符串常量,final修飾;StringBuffer字符串變量(線程安全);StringBuilder 字符串變量(線程不安全).此外StringBuilder和StringBuffer實(shí)現(xiàn)原理一樣,都是基于數(shù)組擴(kuò)容來(lái)實(shí)現(xiàn)的.
String和StringBuffer的區(qū)別?
String和StringBuffer主要區(qū)別是性能:String是不可變對(duì)象,每次對(duì)String類型進(jìn)行操作都等同于產(chǎn)生了一個(gè)新的String對(duì)象,然后指向新的String對(duì)象.所以盡量不要對(duì)String進(jìn)行大量的拼接操作,否則會(huì)產(chǎn)生很多臨時(shí)對(duì)象,導(dǎo)致GC開始工作,影響系統(tǒng)性能.
StringBuffer是對(duì)象本身操作,而不是產(chǎn)生新的對(duì)象,因此在有大量拼接的情況下,我們建議使用StringBuffer(線程安全)
StringBuffer和StringBuilder
StringBuffer和StringBuilder的實(shí)現(xiàn)原理一樣,其父類都是AbstractStringBuilder.StringBuffer是線程安全的,StringBuilder是JDK 1.5新增的,其功能和StringBuffer類似,但是非線程安全.因此,在沒(méi)有多線程問(wèn)題的前提下,使用StringBuilder會(huì)取得更好的性能.
總結(jié)
以上是生活随笔為你收集整理的String,StringBuffer和StringBuilder区别?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 父类的静态方法能否被子类重写?
- 下一篇: a=a+b与a+=b有什么区别吗?