String定长字符串;
StringBuffer变长字符串,在处理字符串时,每次修改都会改变对象自身而不生成新对象,内存优于String;
StringBuffer是线程安全的,在多线程程序中可以很方便的使用,但是效率相对慢些。
1.StringBuffer对象初始化
一般用构造方法来创建,例如:
StringBuffer s = new StringBuffer(); s为空对象
StringBuffer s = new StringBuffer("abc"); s为"abc"
【注】StringBuffer与String为不同类型,不能直接强转,StringBuffer对象和String对象之间互转如下:
String s="abc";
StringBuffer sb1 = new StringBuffer("123");
StringBuffer sb2 = new StringBuffer(s);//String-->StringBuffer;
String s1 = sb1.toString();//StringBuffer--->String;
2.StringBuffer常用方法
a.追加append()[将类容追加到StringBuffer对象的末尾,类似于字符串连接]
public StringBuffer append(boolean b)
使用该方法进行字符串的连接,如应用于数据库SQL语句的连接:
StringBuffer sb = new StringBuffer();
String user = "test";
String pwd = "123";
sb.append("select*from userInfo where username=")
.append(user)
.append("and pwd=")
.append(pwd);
则sb的值为"select * from userInfo where username=test and pwd=123"。
b.deleteCharAt()[删除指定位置的字符,之后剩余内容形成新字符串]
StringBuffer sb = new StringBuffer("0123");
sb.deleteCharAt(1);
删除索引为1的字符,所以sb的值变为"023";
delete(int start,int end)[删除指定区间内的所有字符,包含start,不包含end的区间]
StringBuffer sb = new StringBuffer("TestString");
sb.delete(1,4);
删除索引1-3的字符,所以sb的值变为"TString";
c.insert()[在StringBuffer对象中插入内容,形成新的字符串]
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false);
sb的索引值4的位置插入false值,形成新的字符串,sb的值是”TestfalseString”。
d.reverse()[将StringBuffer对象中的内容反转,形成新字符串]
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
sb的值为"cba"。
e.setCharAt(int index, char ch)[修改对象中索引值为index位置的字符为新的字符ch]
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
则对象sb的值将变成”aDc”。
f.trimToSize()[去掉字符串前后的空格,将对象中的存储空间缩小到和字符串长度一样]