String 的值是不可變的,每次對String的操作都會生成新的String對象,不僅效率低,而且耗費大量內存空間。
StringBuffer類和String類一樣,也用來表示字符串,但是StringBuffer的內部實現方式和String不同,在進行字符串處理時,不生成新的對象,在內存使用上要優于String。
StringBuffer 默認分配16字節長度的緩沖區,當字符串超過該大小時,會自動增加緩沖區長度,而不是生成新的對象。
StringBuffer不像String,只能通過 new 來創建對象,不支持簡寫方式,例如:
StringBuffer類中的方法主要偏重于對于字符串的操作,例如追加、插入和刪除等,這個也是StringBuffer類和String類的主要區別。實際開發中,如果需要對一個字符串進行頻繁的修改,建議使用 StringBuffer。
append() 方法用于向當前字符串的末尾追加內容,類似于字符串的連接。調用該方法以后,StringBuffer對象的內容也發生改變,例如:
則對象str的值將變成”biancheng100true”。注意是str指向的內容變了,不是str的指向變了。
字符串的”+“操作實際上也是先創建一個StringBuffer對象,然后調用append()方法將字符串片段拼接起來,最后調用toString()方法轉換為字符串。
這樣看來,String的連接操作就比StringBuffer多出了一些附加操作,效率上必然會打折扣。
但是,對于長度較小的字符串,”+“操作更加直觀,更具可讀性,有些時候可以稍微犧牲一下效率。
deleteCharAt() 方法用來刪除指定位置的字符,并將剩余的字符形成新的字符串。例如:
該代碼將會刪除索引值為3的字符,即”d“字符。
你也可以通過delete()方法一次性刪除多個字符,例如:
該代碼會刪除索引值為1~4之間的字符,包括索引值1,但不包括4。
insert() 用來在指定位置插入字符串,可以認為是append()的升級版。例如:
最后str所指向的字符串為 abcdxyzef。
4) setCharAt() 方法
setCharAt() 方法用來修改指定位置的字符。例如:
該代碼將把索引值為3的字符修改為 z,最后str所指向的字符串為 abczef。
以上僅僅是部分常用方法的簡單說明,更多方法和解釋請查閱API文檔。