为什么JAVA中String比StringBuffer效率高?
1,StringBuffer对象初始化
与String类的初始化不同,StringBuffer对象的初始化有Java提供的特殊语法,但通常是通过构造方法初始化的。
例如:
string buffer s = new string buffer();
以这种方式初始化的StringBuffer对象是一个空对象。
如果需要创建一个包含内容的StringBuffer对象,可以使用:
string buffer s = new string buffer(" ABC ");
这样初始化的StringBuffer对象的内容就是字符串“abc”。
需要注意的是,StringBuffer和String属于不同的类型,不能直接强制转换。以下代码都是错的:
StringBuffer s = " abc//赋值类型不匹配
string buffer s =(string buffer)" ABC ";//没有继承关系,无法进行强制转移。
StringBuffer对象和String对象之间相互转换的代码如下:
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.附加方法
公共字符串缓冲区追加(布尔b)
该方法的作用是将内容追加到当前StringBuffer对象的末尾,类似于字符串串联。调用此方法后,StringBuffer对象的内容也会发生变化,例如:
string buffer sb = new string buffer(" ABC ");
sb.append(真);
对象sb的值会变成“abctrue”。
使用这种方法连接字符串会比string保存更多的内容,例如,它应用于数据库SQL语句的连接,如:
string buffer sb = new string buffer();
String user = " test
string pwd = " 123 ";
sb . append(" select * from userInfo where username = ")
。追加(用户)
。append(" and pwd= ")
。追加(pwd);
所以对象sb的值是字符串“select * from userinfo其中username = test,pwd = 123”。
B.删除字符方法
公共string buffer delete charat(int index)
这个方法的作用是删除指定位置的字符,然后将剩余的内容组成一个新的字符串。例如:
string buffer sb = new string buffer(" Test ");
某人(somebody的简写)delete charat(1);
这段代码的作用是删除string对象sb中索引值为1的字符,也就是删除第二个字符,剩下的内容组成一个新的字符串。对象sb的值就变成了“Tst”。
还有一个功能类似的删除方法:
公共字符串缓冲区删除(int start,int end)
该方法的作用是删除指定区间内的所有字符,包括有起始索引值和没有结束索引值的区间。例如:
string buffer sb = new string buffer(" test string ");
某人(somebody的简写)删除(1,4);
这段代码的作用是删除索引值1(含)到索引值4(不含)的所有字符,剩下的字符组成一个新的字符串。对象sb的值是“TString”。
C.插入方法
公共StringBuffer insert(int offset,boolean b)
这个方法的作用是将内容插入到StringBuffer对象中,然后形成一个新的字符串。例如:
string buffer sb = new string buffer(" test string ");
sb.insert(4,假);
这个示例代码的作用是在对象sb的索引值4处插入一个false值,形成一个新的字符串,然后执行后对象sb的值为“TestfalseString”。
D.反向方法
公共字符串缓冲反转()
这个方法的作用是反转StringBuffer对象的内容,然后形成一个新的字符串。例如:
string buffer sb = new string buffer(" ABC ");
sb . revert();
倒置后,物体sb中的内容会变成“cba”。
e、setCharAt方法
public void setCharAt(int index,char ch)
该方法的作用是将对象中索引值为索引位置的字符修改为新字符ch。例如:
string buffer sb = new string buffer(" ABC ");
sb.setCharAt(1,' D ');
对象sb的值会变成“aDc”。
F.trimToSize方法
公共void trimToSize()
这个方法的作用是将StringBuffer对象中的存储空间减少到与字符串长度相同的长度,从而减少空间的浪费。