6.2.6 缓冲字符串处理的方法

下面将学习StringBuffer类的一些主要方法。其实这些方法有很多与String类的方法很相似,通过学习可以进行比较。

1.初始化字符串


StringBuffer sb=new StringBuffer(字符串);


使用这种形式的构造器,可以构建具有初始化文本的对象,容量大小就是字符串的长度。一旦创建了“StringBuffer”类的对象,就可以使用“StringBuffer”类的大量方法和属性。“StringBuffer”类最常用的是“append()”方法,它将文本内容添加到现有的“StringBuffer”对象内存中字符串的结尾处。

【实例6.26】下面看看这个方法应用的实例。


01 ///构造一个缓冲字符串类的对象

02 ///通过append方法,在这个对象后面添加一个新字符串

03 public class str26

04 {

05 public static void main(String[]args)

06 {

07 StringBuffer sb=new StringBuffer("小明是一个优秀");

08 sb.append("的程序员");

09 System.out.println(sb);

10 }

11 }


【代码说明】第8行使用append()方法将两个字符串连接在一起,有点像String类的concat()方法。

【运行效果】


小明是一个优秀的程序员

【实例6.27】前面讲了“setLength()”方法,现在通过实例了解其用法。


01 ///构造一个缓冲字符串类的对象

02 ///通过append方法,在这个对象后面添加一个新字符串

03 ///通过setLength方法来设置缓冲字符串对象的长度

04 public class str27

05 {

06 public static void main(String[]args)

07 {

08 StringBuffer sb=new StringBuffer("小明是一个优秀");

09 sb.append("的程序员");

10 sb.setLength(3);

11 System.out.println(sb);

12 }

13 }


【代码说明】第8行定义了字符串sb,第9行将两个字符串连接起来,此时字符串的长度是11。第10行指定字符串长度是3,所以读者要注意输出结果。

【运行效果】


小明是


2.取字符串的单个字符

charAt()方法返回字符串中的单个字符。

【实例6.28】下面是这个方法的实例。


01 ///构造一个缓冲字符串类对象

02 ///返回指定位置的字符

03 public class str28

04 {

05 public static void main(String[]args)

06 {

07 StringBuffer sb=new StringBuffer("小明是一个优秀");

08 System.out.println(sb.charAt(3));

09 }

10 }


【代码说明】第7行定义了字符串sb,第8行指定输出sb的第四个元素,因为索引时从0开始的,所以代码是charAt(3)。

说明 除特殊情况外,基本上所有的索引都是从0开始。

【运行效果】



3.单个字符串赋值

setCharAt()方法对字符串中的单个字符赋值或进行替换。

【实例6.29】下面是这个方法的实例。


01 ///构造一个缓冲字符串类对象

02 ///将指定位置的元素替换成新的字符

03 public class str29

04 {

05 public static void main(String[]args)

06 {

07 StringBuffer sb=new StringBuffer("小明是一个优秀程序员");

08 sb.setCharAt(0,'张');

09 System.out.println(sb);

10 }

11 }


【代码说明】“setCharAt()”方法使用的格式是“setCharAt(int index, char ch)”。上面的实例将字符串中的“小”替换成“张”。

【运行效果】


张明是一个优秀程序员


4.指定位置插入字符串

insert()方法在字符串指定位置插入值。

【实例6.30】下面学习一个实例。


01 ///构造一个缓冲字符串类对象

02 ///使用insert方法将新字符串插入到指定的位置上

03 public class str30

04 {

05 public static void main(String[]args)

06 {

07 StringBuffer sb=new StringBuffer("我是一个优秀");

08 sb.insert(6,"的程序员");

09 System.out.println(sb);

10 }

11 }


【代码说明】第8行的结构就是“insert(int index, string str)”。最终的结果其实是连接了两个字符串,因为指定的位置正好是字符串sb的结束位置。

【运行效果】


我是一个优秀的程序员


上面的这个例子有点像“append()”方法。

【实例6.31】下面再看一个实例。


01 ///构造一个缓冲字符串类对象

02 ///使用append方法连接字符串

03 public class str32

04 {

05 public static void main(String[]args)

06 {

07 StringBuffer sb=new StringBuffer("我是一个优秀的");

08 sb.append("程序员");

09 System.out.println(sb);

10 }

11 }


【代码说明】第8行使用了“append()”方法实现了和上一个实例相同的功能。

【运行效果】


我是一个优秀的程序员

5.返回字符串的子串

substring()方法返回字符串的一个子串。

【实例6.32】下面是这个方法的实例。


01 ///构造一个缓冲字符串类对象

02 ///使用substring方法返回指定位置开始到结束位置的子串

03 public class str33

04 {

05 public static void main(String[]args)

06 {

07 StringBuffer sb=new StringBuffer("我是一个程序员");

08 System.out.println(sb.substring(2));

09 }

10 }


【代码说明】这个程序段返回的是,从字符串的第三个位置开始,到最后位置之间的子字符串。

【运行效果】


一个程序员

【实例6.33】针对这个方法,再看看下面的实例。


01 ///构造一个缓冲字符串类对象

02 ///使用substring方法返回指定位置开始到另一个指定位置结束的子串

03 public class str34

04 {

05 public static void main(String[]args)

06 {

07 StringBuffer sb=new StringBuffer("我是一个程序员");

08 System.out.println(sb.substring(2,7));

09 }

10 }


【代码说明】其实这个方法同“String”类中的方法用法相同。返回从开始位置到结束位置之间的字符串。

【运行效果】


一个程序员

6.倒置字符串的内容

reverse()方法用来倒置“StringBuffer”的内容。

【实例6.34】下面针对这个方法看一个实例。


01 ///构造一个缓冲字符串类对象

02 ///将字符串倒置后输出

03 public class str35

04 {

05 public static void main(String[]args)

06 {

07 StringBuffer sb=new StringBuffer("我是一个程序员");

08 System.out.println(sb.reverse());

09 }

10 }


【代码说明】这段代码比较简单,第8行直接调用reverse()方法,不需要任何参数。

【运行效果】


员序程个一是我