String:適用於少許的字符串操做的狀況。緩存
StringBuilder:適用於單線程下在字符緩衝區(一種容器)進行大量操做的狀況。線程不安全的。安全
StringBuffer:適用多線程下在字符緩衝區進行大量操做的狀況。 線程安全。多線程
三個類之間的區別是,線程安全與運行速度,運行速度:StringBuilder (不安全)> StringBuffer (安全)> String。ui
後面兩個類的運行速度都 > String ,理由是 String 是字符串常量,String 對象一旦建立就不可改變。所以String每次改變,都等同於從新建立一個新 String 對象,而後指針指向新的 String。StringBuilder 與 StringBuffer 是字符串變量。線程
線程安全,指針
若是一個 StringBuffer 對象,在字符串緩存區域,被多個線程使用,StringBuffer 裏有許多方法是帶有 synchronized 關鍵字。能夠保證線程安全。而 StringBuilder 沒有該關鍵字,因此多線程最好使用 前者,單線程能夠使用速度快的 StringBuilder對象