StringBuilder與StringBuffer的區(qū)別

String、StringBuffer、StringBuilder區(qū)別

StringBuffer、StringBuilder和String一樣,也用來代表字符串。String類是不可變類,任何對String的改變都 會引發(fā)新的String對象的生成;StringBuffer則是可變類,任何對它所指代的字符串的改變都不會產(chǎn)生新的對象。既然可變和不可變都有了,為何還有一個StringBuilder呢?相信初期的你,在進行append時,一般都會選擇StringBuffer吧!

先說一下集合的故事,HashTable是線程安全的,很多方法都是synchronized方法,而HashMap不是線程安全的,但其在單線程程序中的性能比HashTable要高。StringBuffer和StringBuilder類的區(qū)別也是如此,他們的原理和操作基本相同,區(qū)別在于StringBufferd支持并發(fā)操作,線性安全的,適 合多線程中使用。StringBuilder不支持并發(fā)操作,線性不安全的,不適合多線程中使用。新引入的StringBuilder類不是線程安全的,但其在單線程中的性能比StringBuffer高。

不考慮多線程,采用String對象時(我把Count/100),執(zhí)行時間比其他兩個都要高,而采用StringBuffer對象和采用StringBuilder對象的差別也比較明顯。由此可見,如果我們的程序是在單線程下運行,或者是不必考慮到線程同步問題,我們應該優(yōu)先使用StringBuilder類;如果要保證線程安全,自然是StringBuffer。

從后面List的測試結(jié)果可以看出,除了對多線程的支持不一樣外,這兩個類的使用方式和結(jié)果幾乎沒有任何差別,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • 相關(guān)概念 面向?qū)ο蟮娜齻€特征 封裝,繼承,多態(tài).這個應該是人人皆知.有時候也會加上抽象. 多態(tài)的好處 允許不同類對...
    東經(jīng)315度閱讀 2,202評論 0 8
  • 一, StringBuilder是線程非安全的,StringBuffer是線程安全的。 二, 當我們在字符串緩沖去...
    付戈閱讀 269評論 0 0
  • 1. ArrayList、LinkedList、Vector的區(qū)別 答: 相同點: ArraList、Linked...
    wayneinyz閱讀 270評論 0 0
  • 關(guān)于寫作最大的困惑:不知道該寫什么題材,想到了題材不能深入的思考只是停留在表面,沒有文采寫的比較枯燥,總結(jié)文章時只...
    蔣xxxxx閱讀 114評論 0 0

友情鏈接更多精彩內(nèi)容