StringBuffer 浅淡理解

StringBuffer 浅淡理解

StringBuffer 浅淡理解

一、StringBuffer对象的初始化

1.StringBuffer 用在对多种数据类型的拼接,和若干次拼接,效率更高,内存更节省
2.如果可能,建议优先采用StringBuilder该类,因为在大多数实现中,它比 StringBuffer 要快。
3.StringBuilder的API与StringBuffer相同,StringBuilder非线程安全,效率高,StringBuffer线程安全,效率低

StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。
例如:

StringBuffer s = new StringBuffer();

这样初始化出的StringBuffer对象是一个空的对象,就是我犯的错误。
如果需要创建带有内容的StringBuffer对象,则可以使用:

StringBuffer s = new StringBuffer(“abc”);

这样初始化出的StringBuffer对象的内容就是字符串”abc”。
需要注意的是,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:StringBuffer s = “abc”;赋值类型不匹配StringBuffer s = (StringBuffer)”abc”;不存在继承关系,无法进行强转
StringBuffer对象和String对象之间的互转的代码如下:

String s = “abc”;
StringBuffer sb1 = new StringBuffer(“123”);
StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer
String s1 = sb1.toString(); //StringBuffer转换为String

二、StringBuffer的常用方法

append方法 (追加)

public StringBuffer append(boolean b)

该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:

StringBuffer sb = new StringBuffer(“abc”);
sb.append(true);

则对象sb的值将变成”abctrue”。
使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库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”。

insert方法 (插入)

public StringBuffer insert(int offset, boolean b)

该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:

StringBuffer sb = new StringBuffer(“javaString”);
sb.insert(4,false);
该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”javafalseString”。

delete方法 (删除)

public StringBuffer delete(int start,int end)

该方法的作用是删除指定位置中间的字符。例如:

StringBuffer sb = new StringBuffer(“javaString”);
sb.delete(2,4);
该示例代码的作用是在对象sb的索引值2的位置删除值,形成新的字符串,则执行以后对象sb的值是”jaString”。

replace方法 (修改)

public StringBuffer replace(int start,int end,String str)

使用给定 String 中的字符替换此序列的子字符串中的字符。例如:

StringBuffer sb = new StringBuffer(“javaString”);
sb.replace(2,3,"SB");
该示例代码的作用是在对象sb的索引值2的位置替换值,形成新的字符串,则执行以后对象sb的值是”jaSBaString”。

StringBuffer 转换成String

方式一

String string = sb.toString();

方式二

String string1 = new String(sb);