细讲Java的StringBuffer类
StringBuffer类相比起String,处理字符串会更高效,更清晰直观。如果要处理需要经常修改的字符串,用它就再合适不过了。
1、创建对象
StringBuffer类创建对象跟我们Java创建的类一样,就是用new的方式,比如说我用创建一个名叫name的StringBuffer对象,代码就是
StringBuffer name = new StringBuffer();
2、基本方法
1、在末尾添加字符串
我们使用append()方法来实现这个效果。这个的原理类似队列的算法,先进先出,后入后出。看下面一段代码
1 package 高效处理字符串;
2
3 public class StringBuffers {
4 public static void main(String args[]) {
5 StringBuffer name = new StringBuffer();//新建StringBuffer对象
6 name.append("Hello ");//在最后添加字符串
7 name.append("world!");
8 name.append("I'm ");
9 name.append("Ray");
10 name.append("!");
11 String str = name.toString();//合并字符串
12 System.out.println(str);//看看效果
13 }
这段代码先新建StringBuffer对象,再添加了5段字符串,用toString()方法将StringBuffer对象合并成字符串并存储到str变量里,输出了str变量。代码的结果为:
Hello world!I'm Ray!
代码成功运行!成功输出字符串。append()方法和toString()方法我们以后还会使用,请牢记于心。
2、插入字符串,删除部分内容
上代码:
1 package 高效处理字符串;
2
3 public class StringBuffers {
4 public static void main(String args[]) {
5 StringBuffer name = new StringBuffer();//新建StringBuffer对象
6 name.append("Hello ");//在最后添加字符串
7 name.append("world!");
8 name.append("I'm ");
9 name.append("!");
10 name.insert(0,"Program:");
11 name.insert(24,"Ray");
12 name.insert(name.length(),"How are you?aaawefwe");
13 name.deleteCharAt(41);
14 name.delete(40,49);
15 String str = name.toString();//合并字符串
16 System.out.println(str);//看看效果
17 }
18 }
insert()方法传入两个参数,第一个参数为索引值,第二个参数为插入的值,在已有字符串之前插入,即在一开始插入,索引值为0,第一个字符为1,以此类推,name.length()表示在已有字符串之后,清晰地讲就是表示在末尾插入(比Python要不一样一点,Python下标第一个字符为0,第二个字符为1,以此类推)。
删除内容用deleteCharAt()和delete():deleteCharAt()传入一个参数,即要删除的字符的索引值,如果我要删除第一个字符,用name.deleteCharAt(1)就可以了,但它只能删除一个字符,不大方便,而delete()方法就要方便许多啦,如果我要删除索引1到索引3,用name.delete(1,4)就可以了,其中要注意:第一个参数传入的索引值代表的字符会被删除,一直到(第二个参数-1)的索引值代表的字符为止,就是包括起点,不包括终点。
但对于name.substring()(截取指定范围内容)来说,就是截取从(起点-1)截到终点
3、反转替换
用name.reverse()和name.replace()。比如说以下代码:
package 高效处理字符串;
public class StringBuffers {
public static void main(String args[]) {
StringBuffer huiwen_str = new StringBuffer();
huiwen_str.append("A man, a plan, a canal, Panama");//这是一段英语的回文句,我们要把他反转
String str_huiwen = huiwen_str.reverse().toString();//huiwen_str.reverse()把句子反转掉,再toString()合成字符串
System.out.println(str_huiwen);
System.out.println("--------------*分割线*--------------");
StringBuffer tihuan_str = new StringBuffer();
tihuan_str.append("haha ");
tihuan_str.append("我是谁呀");
tihuan_str.replace(7, 9, "Ray");//将"谁"替换成"Ray"
String str_tihuan = tihuan_str.toString();
System.out.println(str_tihuan);
}
}
结果为:
amanaP ,lanac a ,nalp a ,nam A
--------------*分割线*--------------
haha 我是Ray
name.reverse()就不细讲了,replace方法前两个参数为(起点-1)和终点,第三个参数为替换的文本
StringBuffer还有很多方法,就不细讲了,感兴趣可以去https://www.cnblogs.com/oumyye/p/4227228.html和https://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html两篇博客去加深理解。