String、StringBuilder和StringBuffer
Stirng:
??? ??? String 是不可變的對(duì)象,在每次對(duì) String 類(lèi)型進(jìn)行改變的時(shí)候其實(shí)都等同于生成了一個(gè)新的 String對(duì)象,然后將指針指向新的 String 對(duì)象,所以經(jīng)常改變內(nèi)容的字符串最好不要用 String ,因?yàn)槊看紊蓪?duì)象都會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響,特別當(dāng)內(nèi)存中無(wú)引用對(duì)象多了以后, JVM 的 GC 就會(huì)開(kāi)始工作,那速度是一定會(huì)相當(dāng)慢的。
StirngBuffer:
??????? 每次更改都會(huì)對(duì) StringBuffer 對(duì)象本身進(jìn)行操作,而不是生成新的對(duì)象,再改變對(duì)象引用。所以在一般情況下我們推薦使用 StringBuffer ,特別是字符串對(duì)象經(jīng)常改變的情況下。
StringBuilder:
??????? StringBuilder 是 JDK5.0 中新增加的一個(gè)類(lèi),StringBuffer 線程安全的可變字符序列。類(lèi)似于 String 的字符串緩沖區(qū),但不能修改。與StringBuffer 類(lèi)相比,通常應(yīng)該優(yōu)先使用 StringBuilder 類(lèi),因?yàn)樗С炙邢嗤牟僮?#xff0c;但由于它不執(zhí)行同步,所以速度更快。 但是如果將 StringBuilder 的實(shí)例用于多個(gè)線程是不安全的。需要這樣的同步,則建議使用 StringBuffer 。
基本來(lái)說(shuō)都是在性能上都是 StringBuilder > StringBuffer > String。
轉(zhuǎn)載于:https://blog.51cto.com/hurly/986929
總結(jié)
以上是生活随笔為你收集整理的String、StringBuilder和StringBuffer的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。