1. 程式人生 > >查缺補漏——String,StringBuffer,StringBuilder區別及用法

查缺補漏——String,StringBuffer,StringBuilder區別及用法

最近在看併發及虛擬機器部分,介紹了String是不可變的物件,順便複習了與string相關的類。

一 String是不可變物件,它一定是執行緒安全的,因為當我們呼叫substring(),replace(),concat()這些方法時,都不會影響它原來的值,只會返回一個新構造的字串物件,因此當要經常改變字串內容時儘量不要用String物件,因為每次生成物件都會對系統性能產生影響,特別是當記憶體中無引用物件多了以後,JVM的GC就開始工作,效能就會降低。

二 StringBuffer(JDK1.0)是執行緒安全的,因為類中的方法(原始碼)是用synchronized宣告的,如圖:

因此該類可以執行在多執行緒環境中,在頻繁地進行字串運算時可以使用。

三 而對於StringBulider類(JDK1.5)來說就是非執行緒安全的,因為他的底層原始碼沒有synchronized宣告,可以在單執行緒環境下使用。