String类和StringBuffer类的区别

StringBuffer类和String一样,也是用来表示字符串的,但是由于StringBuffer的内部实现和String不同,所以StringBuffer在处理字符串时不会生成新的对象,所以在内存使用上要优于String类。

所以在实际使用中,如果经常需要修改一个字符串,比如插入和删除,那么使用StringBuffer比较合适。

StringBuffer类中有许多方法与String类中的方法相同,这些方法的功能与String类中的方法完全相同。

但是,一个最显著的区别是,StringBuffer对象的每次修改都会改变对象本身,这是与String类最大的区别。

另外,由于StringBuffer是线程安全的,所以可以很容易地用在多线程程序中,但是程序的执行效率相对较慢。

1,StringBuffer对象初始化

与String类的初始化不同,StringBuffer对象的初始化有Java提供的特殊语法,但通常是通过构造方法初始化的。

例如:

1

string buffer s = new string buffer();

以这种方式初始化的StringBuffer对象是一个空对象。

如果需要创建一个包含内容的StringBuffer对象,可以使用:

1

string buffer s = new string buffer(" ABC ");

这样初始化的StringBuffer对象的内容就是字符串“abc”。

需要注意的是,StringBuffer和String属于不同的类型,不能直接强制转换。以下代码都是错的:

1

2

StringBuffer s = " abc//赋值类型不匹配

string buffer s =(string buffer)" ABC ";//没有继承关系,无法进行强制转移。

StringBuffer对象和String对象之间相互转换的代码如下:

1

2

String s = " abc

string buffer sb 1 = new string buffer(" 123 ");

StringBuffer sb2 =新的string buffer;//字符串被转换为StringBuffer。

string s 1 = sb 1 . tostring();//StringBuffer转换为字符串

2.StringBuffer的常用方法

StringBuffer类中的方法主要是针对字符串的变化,比如添加、插入、删除,这也是StringBuffer和String类的主要区别。

A.附加方法

1

公共字符串缓冲区追加(布尔b)

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

1

2

string buffe sb = new string buffer(" ABC ");

sb.append(真);

对象sb的值会变成“abctrue”。

使用这种方法连接字符串会比string保存更多的内容,例如,它应用于数据库SQL语句的连接,如:

1

2

string buffer sb = new string buffer();

String user = " test

string pwd = " 123 ";

sb . append(" select * from userInfo where username = ")

。追加(用户)

。append(" and pwd= ")

。追加(pwd);

所以对象sb的值是一个字符串。

1

“select * from userInfo,其中username=test,pwd=123”.

B.删除字符方法

1

公共string buffer delete charat(int index)

这个方法的作用是删除指定位置的字符,然后将剩余的内容组成一个新的字符串。例如:

1

2

string buffer sb = new string buffer(" Test ");

sb . delete charat(1);

这段代码的作用是删除string对象sb中索引值为1的字符,也就是删除第二个字符,剩下的内容组成一个新的字符串。对象sb的值就变成了“Tst”。

还有一个功能类似的删除方法:

1

公共字符串缓冲区删除(int start,int end)

该方法的作用是删除指定区间内的所有字符,包括有起始索引值和没有结束索引值的区间。例如:

1

2

string buffer sb = new string buffer(" test string ");

sb.delete (1,4);

这段代码的作用是删除索引值1(含)到索引值4(不含)的所有字符,剩下的字符组成一个新的字符串。对象sb的值是“TString”。

C.插入方法

1

公共StringBuffer insert(int offset,boolean b)

这个方法的作用是将内容插入到StringBuffer对象中,然后形成一个新的字符串。例如:

1

2

string buffer sb = new string buffer(" test string ");

sb.insert(4,假);

这个示例代码的作用是在对象sb的索引值4处插入一个false值,形成一个新的字符串,然后执行后对象sb的值为“TestfalseString”。

D.反向方法

1

公共字符串缓冲反转()

这个方法的作用是反转StringBuffer对象的内容,然后形成一个新的字符串。例如:

1

2

string buffer sb = new string buffer(" ABC ");

sb . revert();

倒置后,物体sb中的内容会变成“cba”。

e、setCharAt方法

1

public void setCharAt(int index,char ch)

该方法的作用是将对象中索引值为索引位置的字符修改为新字符ch。例如:

1

2

string buffer sb = new string buffer(" ABC ");

sb.setCharAt(1,' D ');

对象sb的值会变成“aDc”。

F.trimToSize方法

1

公共void trimToSize()

这个方法的作用是将StringBuffer对象中的存储空间减少到与字符串长度相同的长度,从而减少空间的浪费。

总之,在实际使用中,String和StringBuffer各有优缺点,你可以根据具体的使用环境选择相应的类型来使用。