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()方法,不需要任何参数。
【运行效果】
员序程个一是我