String,StringBuffer 和StringBuilder三者的區(qū)別

前言

筆者因?yàn)橛龅竭@樣的面試題答的不夠全面,經(jīng)過(guò)谷歌后在這里和大家說(shuō)下,還會(huì)跟大家聊一下其應(yīng)用的場(chǎng)景(筆者不怎么喜歡背書(shū)式地將教科書(shū)上的內(nèi)容拿出來(lái)講,除非真的很必要)

String

String 對(duì)象一旦被創(chuàng)建,它就不能被修改,其對(duì)象會(huì)被存儲(chǔ)在String 常量池中。String 對(duì)象不能同時(shí)地被兩個(gè)線程使用。

StringBuffer

StringBuffer是可修改的,意味著StringBuffer 聲明的對(duì)象的值是可變的。而StringBuffer 創(chuàng)建的對(duì)象都會(huì)別存放在堆(heap)中,StringBuffer 和StringBuilder 有著相同的方法,但在StringBuffer的方法中,如果其方法是同步的,那么StringBuffer線程安全。
由于它不允許兩個(gè)線程同時(shí)訪問(wèn)同一個(gè)方法,每個(gè)方法都只能由一個(gè)線程訪問(wèn)一次。但是線程安全也會(huì)帶來(lái)缺點(diǎn),那就是性能會(huì)大大折扣。因此當(dāng)調(diào)用每個(gè)類的方法相同時(shí),StringBuilder 的速度要快于StringBuffer.(這個(gè)在面試中常被問(wèn)到)。
如果StringBuffer 要轉(zhuǎn)換為String 可以用toString()方法。

StringBuilder

StringBuilder 和StringBuffer 差不多相同,它們都繼承于AbstactStringBuilder,StringBuilder同樣是將新建的對(duì)象存放于堆中,也同樣能被修改.主要的區(qū)別是StringBulider線程不安全,但它的速度快。

尾語(yǔ)

如果上訴有誤的話,歡迎提出

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 相關(guān)概念 面向?qū)ο蟮娜齻€(gè)特征 封裝,繼承,多態(tài).這個(gè)應(yīng)該是人人皆知.有時(shí)候也會(huì)加上抽象. 多態(tài)的好處 允許不同類對(duì)...
    東經(jīng)315度閱讀 2,005評(píng)論 0 8
  • 【俱舍】柔克 原創(chuàng) 既張我弓,既挾我矢。 “張”字,本義就是安上弓弦或拉緊弓弦。 《說(shuō)文解字》:“張,施弓弦也。從...
    俱舍閱讀 1,096評(píng)論 0 1
  • 最近有一個(gè)業(yè)務(wù)上的需求: 每次創(chuàng)建一條記錄時(shí)需要清理一下redis緩存,于是想到了django的signals,因...
    wu_sphinx閱讀 3,338評(píng)論 0 1
  • 你敢和你男(女)朋友一起去旅行嗎? 1 群聊天欄窗口里,阿峰發(fā)來(lái)3個(gè)V手勢(shì)勝利表情。 “湖南旅行回來(lái)后,終于分了。...
    吃顆糖啦閱讀 6,806評(píng)論 33 54
  • 最近工作辭了,閑置在家。
    漫漫漫兒閱讀 327評(píng)論 0 3