StringBuffer類和String類一樣,也用來代表字符串。但是StringBuffer的內部實現方式和String不同,StringBuffer在進行字符串的處理時,不生成新的對象,在內存使用上要優於String類。
在實際使用時,如果需要經常對一個字符串進行修改,例如插入、刪除等操作,使用StringBuffer更加適合。
對StringBuffer對象的每次修改都會改變對象自身,這是和String類最大的區別。
1、StringBuffer對象的初始化
使用構造方法進行初始化:
StringBuffer sql_BF = new StringBuffer();
這樣初始化出的StringBuffer對象是一個空的對象。
創建帶有內容的StringBuffer對象:
StringBuffer sb = new StringBuffer("something here");
這樣初始化出的StringBuffer對象的內容就是字符串"something here"。
需要注意的是,StringBuffer和String是不同的類型,也不能直接進行強制類型轉換。StringBuffer對象和String對象之間相互轉換的代碼如下:
2、StringBuffer的常用方法
StringBuffer類中的方法主要偏重於字符串的變化,例如追加、插入、刪除等。
(1)append方法
該方法的作用是追加內容到當前StringBuffer對象的末尾,類似於字符串的連接。調用該方法以後,StringBuffer對象的內容也發生改變。
使用該方法進行字符串的連接,將比String更加節約資源。因此,選擇使用StringBuffer來進行SQL語句的連接,例如
StringBuffer sql_BF = new StringBuffer(); sql_BF.append("INSERT INTO entity_alarm") .append("(id, source, alarm, status, assign, devicetype, alarmtype, occur_time, collect_time, clear_time, clear_insert, tkt_id, sms_send_flag)") .append("VALUES") .append("(") .append("nextval('seq_globalid')") .append(",'") .append(entityAlarm.getSource()) .append("','") .append(entityAlarm.getAlarm()) .append("','") .append(entityAlarm.getStatus()) .append("','") .append(entityAlarm.getAssign()) .append("','") .append(entityAlarm.getDeviceType()) .append("','") .append(entityAlarm.getAlarmType()) .append("','") .append(entityAlarm.getOccur_time()) .append("','") .append(entityAlarm.getCollect_time()) .append("','") .append(entityAlarm.getClear_time()) .append("','") .append(entityAlarm.getClear_insert()) .append("','") .append(entityAlarm.getTkt_id()) .append("',") .append(entityAlarm.getSms_send_flag()) .append(")");
這樣對象 sql_BF 的值就是字符串:
(2)deleteCharAt方法
public StringBuffer deleteCharAt(int index)
該方法的作用是刪除指定位置的字符,然後將剩餘的內容形成新的字符串。例如:
StringBuffer sb = new StringBuffer("something here"); sb.deleteCharAt(1);
該代碼的作用是刪除字符串對象sb中索引值爲1的字符,也就是刪除第二個字符,剩餘的內容組成一個新的字符串。所以對象sb的值變爲"smething here" 。
(3)delete方法
public StringBuffer delete(int start, int end)
該方法的作用是刪除指定區間以內的所有字符,包含start,不包含end索引值的區間。例如:
StringBuffer sb = new StringBuffer("something here"); sb.delete(1, 4);
該代碼的作用是刪除索引值1(包括)到索引值4(不包括)之間的所有字符,剩餘的字符形成新的字符串。則對象sb的值是"shing here"。
(4)insert方法
(5)reverse方法
(6)setCharAt方法
(7)trimToSize方法