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方法