天天看點

String,StringBuffer,StringBuilder知多少?

       String:java.lang.String被設計為final類型,這意味着該類不能被Override,其定義的變量不是基本類型而是對象類型。對象變量一旦定義後,其值就不能被修改。對于已經存在的String對象,“修改它的值”,其實并沒有修改其值,隻是新建立了一個對象,然後将新值賦予這個對象,原來的對象被回收。

       StringBuffer:java.lang.StringBuffer也被設計為final類型,它是一個類似于String字元串緩沖區,對它的修改不會像修改String那樣重複建立很多新對象。使用其append方法可以修改StrigBuffer内的值,它是在JDK1.0的時候問世。StringBuffer是一個線程安全的,能夠用在多線程的環境下。

       StringBuilder:java.lang.StringBuilder也被設計為final類型,在JDK1.5時問世,用來代替StringBuffer,但是StringBuilder是一個非線程安全的類,隻能用在單線程的環境下才能準确的替換StringBuffer。因為StringBuilder不執行線程同步,是以它的效率要比StringBuffer更快。