String、StringBuffer、StringBuilder有什麼區別 String、StringBuffer、StringBuilder有什麼區別

String、StringBuffer、StringBuilder有什麼區別

區別

先說說String和StringBuffer/StringBuilder:

  • String是標準的不可變類,是一個字符串常量池,並且聲明的對象在方法中是唯一存在的。

  • StringBuffer/StringBuilder對象的值是可以改變的,並且值改變以後,對象引用不會發生改變;兩者對象在構造過程中,首先按照默認大小申請一個字符數組,由於會不斷加入新數據,當超過默認大小後,會創建一個更大的數組,並將原先的數組內容複製過來,再丟棄舊的數組。

StringBuffer/StringBuilder聽起來沒啥區別...
唯一需要注意的是:

  • StringBuffer是線程安全的,但是StringBuilder是線程不安全的。

    應用

  • 在字符串內容不經常發生變化的業務場景優先使用String類。例如:常量聲明、少量的字符串拼接操作等。如果有大量的字符串內容拼接,避免使用String與String之間的“+”操作,因爲這樣會產生大量無用的中間對象,耗費空間且執行效率低下(新建對象、回收對象花費大量時間)。

  • 在頻繁進行字符串的運算(如拼接、替換、刪除等),並且運行在多線程環境下,建議使用StringBuffer,例如XML解析、HTTP參數解析與封裝。

  • 在頻繁進行字符串的運算(如拼接、替換、刪除等),並且運行在單線程環境下,建議使用StringBuilder,例如SQL語句拼裝、JSON封裝等。

posted @ 2019-03-11 16:11 南嶼北島 閱讀( ...) 評論( ...) 編輯 收藏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章