1. 程式人生 > >String,StringBuffer,StringBuilder的

String,StringBuffer,StringBuilder的

一 相同點 都可以進行儲存字串,一般情況下效率StringBuilder>StringBuffer>String 二 不同點 String : String字串常量,是不可變的。因此每次定義或者改變String的值,其實是改變的該物件的引用,如果需要經常改變字串的值,會一直分配新的地址,導致記憶體中無引用的物件較多,當達到一定程度時,JVM的垃圾回收機制就會起作用,對系統性能會產生影響。因此這種情況不建議使用String。 StringBuffer: StringBuffer首先是執行緒安全的,其向外暴露的方法都使用了synchronized關鍵字修飾。使用這個型別每次結果都會對 StringBuffer 物件本身進行操作,而不是生成新的物件,再改變物件引用。所以在一般情況下我們推薦使用 StringBuffer 。示例如下: StringBuffer c = new StringBuffer(“b”); StringBuffer d = new StringBuffer(“b”); System.out.println(cd);(此處結果為false) //由於沒有重寫equals方法,因此此處比較的也是物件的引用即地址。 System.out.println(c.equals(d));(此處結果為false) StringBuffer g = c.append(“a”); System.out.println(c

g);(此處結果為true) 特殊的,String在同一個物件的拼接操作時的效率並不會比StringBuffer慢。 StringBuffer的常用的方法是append和insert方法,append方法是將字串加在字串緩衝區的最後,insert是加在指定位置的後面。 StringBuilder: 該型別主要用在字串緩衝區被單個執行緒使用的時候。建議優先採用該類,因為在大多數實現中,它比 StringBuffer 要快。兩者的方法基本相同。 參考連結:https://blog.csdn.net/rmn190/article/details/1492013