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两篇博客去加深理解。