String、StringBuilder、StringBuffer 的區別

String 對象是不可變對象(顯然線程安全),String 對象一旦創建之後就不可更改了。Java 中對 String 對象進行的操作實際上是一個不斷創建新的對象並且將舊的對象回收的一個過程,所以執行速度很慢。

StringBuffer 線程安全的可變字符序列:對 StringBuffer對象本身進行操作,而不是生成新的對象。

StringBuilder 線程不安全的可變字符序列:提供一個與 StringBuffer 兼容的API,但不同步。設計作爲 StringBuffer 的一個簡易替換,用在字符緩衝區被單個線程使用的時候,效率比StringBuffer更快。

總結:

  • 在字符串不經常發生變化的業務場景優先使用String(代碼更清晰簡潔)。如常量的聲明,少量的字符串操作(拼接,刪除等)。
  • 在單線程情況下,如有大量的字符串操作情況,應該使用StringBuilder來操作字符串。不能使用String"+"來拼接而是使用,避免產生大量無用的中間對象,耗費空間且執行效率低下(新建對象、回收對象花費大量時間)。
  • 在多線程情況下,如有大量的字符串操作情況,應該使用StringBuffer。
  • 執行速度:StringBuilder > StringBuffer > String
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章