Java 中 StringBuffer 和 String 是有一定的區(qū)別的血久,首先,String 是被 final 修飾的帮非,他的長度是不可變的氧吐,就算調用 String 的 concat 方法,那也是把字符串拼接起來并重新創(chuàng)建一個對象末盔,把拼接后的 String 的值賦給新創(chuàng)建的對象筑舅,而 StringBuffer 的長度是可變的,調用StringBuffer 的 append 方法陨舱,來改變 StringBuffer 的長度翠拣,并且,相比較于 StringBuffer游盲,String 一旦發(fā)生長度變化误墓,是非常耗費內存的邦尊!
當對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類优烧。
和 String 類不同的是蝉揍,StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,并且不產生新的未使用對象畦娄。
StringBuilder 類在 Java 5 中被提出又沾,它和 StringBuffer 之間的最大不同在于 StringBuilder 的方法不是線程安全的(不能同步訪問)。
由于 StringBuilder 相較于 StringBuffer 有速度優(yōu)勢熙卡,所以多數情況下建議使用 StringBuilder 類杖刷。然而在應用程序要求線程安全的情況下,則必須使用 StringBuffer 類驳癌。
《阿里巴巴Java開發(fā)規(guī)范》推薦在循環(huán)體內滑燃,字符串的連接方式使用StringBuilder的append的方法進行擴展,為什么呢颓鲜,測試一波: