這篇文章主要介紹String、StringBuffer與StringBuilder之間有哪些區(qū)別,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比沅陵網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式沅陵網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋沅陵地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。
1.執(zhí)行速度:StringBuilder > StringBuffer > String
2.
String
<(StringBuffer,StringBuilder)的原因
String:是字符串常量
StringBuffer:是字符串變量
StringBuilder:是字符串變量
3.
StringBuilder:線程非安全的
StringBuffer:線程安全的 當我們在字符串緩沖區(qū)被多個線程使用時,JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正確操作的。當然大多數(shù)情況下就是我們是在單線程下進行的操作,所以大多數(shù)情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。 1.如果要操作少量的數(shù)據(jù)用 String。 2.在單線程操作字符串緩沖區(qū)下,操作大量數(shù)據(jù)用 StringBuilder。 3.在多線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù),需要保證線程安全的時候用 StringBuffer。 String s = "abcd"; s = s+1; System.out.print(s); 其實這是一種欺騙,JVM是這樣解析這段代碼的:首先創(chuàng)建對象s,賦予一個abcd,然后再創(chuàng)建一個新的對象s用來執(zhí)行第二行代碼,也就是說我們之前對象s并沒有變化,所以我們說String類型是不可改變的對象了,由于這種機制,每當用String操作字符串時,實際上是在不斷的創(chuàng)建新的對象,而原來的對象就會變?yōu)槔唬牵没厥盏?,可想而知這樣執(zhí)行效率會有多低。
總結:
注意:
疑問1.
Sting不是字符串常量嗎,那這里為什么可以變動?
解釋:
以上是“String、StringBuffer與StringBuilder之間有哪些區(qū)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!