java 早期平臺提供了兩個(gè)類:String 和 StringBuffer,它們可以儲存和操作字符串,即包含多個(gè)字 符的字符數(shù)據(jù)。這個(gè) String 類提供了數(shù)值不可改變的字符串。而這個(gè) StringBuffer 類提供的字符串 可以進(jìn)行修改。
當(dāng)你知道字符數(shù)據(jù)要改變的時(shí)候你就可以使用 StringBuffer。String 類是不可變 類,任何對 String 的改變都會引發(fā)新的 String 對象的生成;而 StringBuffer 則是可變類,任何對 它所指代的字符串的改變都不會產(chǎn)生新的對象。
StringBuilder 是后面引入的,它與 StringBuffer 類的區(qū)別在于,新引入的 StringBuilder 類不是線 程安全的,但其在單線程中的性能比 StringBuffer 高。 (有興趣的可以去讀下《Think in Java》描 述 HashTable 和 HashMap 區(qū)別的那部分章節(jié)比較熟悉的話,就是支持線程同步保證線程安全而導(dǎo) 致性能下降的問題)
典型地,你可以使用 StringBuffers 來動態(tài)構(gòu)造字符數(shù)據(jù)。另外,String 實(shí)現(xiàn)了 equals 方法,new String(“abc”).equals(newString(“abc”)的結(jié)果為 true,而 StringBuffer 沒有實(shí)現(xiàn) equals 方法,所以,newStringBuffer(“abc”).equals(newStringBuffer(“abc”)的結(jié)果為 false。
新聞熱點(diǎn)
疑難解答