Java中,除了通过string类创建和处理字符串之外,也可以使用StringBuffer处理字符串,更加高效。
StringBuffer类是可变字符串类,创建StringBuffer对象可以随意修改字符内容。每一个StringBuffer对象都能够存储指定容量的字符串,若其长度超过了StringBuffer 的容量,则会自动扩大。


StringBuffer

  • 一、创建StringBuffer 对象
  • 二、追加字符串
  • 三、替换字符
  • 四、反转字符串
  • 五、删除字符串
  • 1、delete方法
  • 2、deleteCharAt方法



一、创建StringBuffer 对象

StringBuffer 提供了三个构造方法创建一个字符串对象:

  1. StringBuffer 构造了一个空的字符串缓冲区,初始化为16个字符的容量。
  2. StringBuffer (int length)创建了一个空的字符缓冲区,初始化为length容量。
  3. StringBuffer (string str)创建了一个字符串缓冲区,内容初始化为指定的字符串内容str,字符串缓冲区初始容量为16加上字符串str的长度。

使用构造函数创建对象实例:

// 定义一个空的字符串缓冲区,含有16个字符的容量
StringBuffer str1 = new StringBuffer();

// 定义一个含有10个字符容量的字符串缓冲区
StringBuffer str2 = new StringBuffer(10);

// 定义一个含有(16+4)的字符串缓冲区,"CSDN"为4个字符
StringBuffer str3 = new StringBuffer("CSDN");
/*
*输出字符串的容量大小
*capacity()方法返回字符串的容量大小
*/
System.out.println(str1.capacity());    // 输出 16
System.out.println(str2.capacity());    // 输出 10
System.out.println(str3.capacity());

上述代码声明了StringBuffer 对象,分别初始化,并实现了查看具体容量的操作。


二、追加字符串

StringBuffer 的append方法用于向原有的StringBuffer 对象中增加字符串。该方法作用是追加内容到当前的StringBuffer对象中,调用这个方法之后,StringBuffer的对象内容也发生了变化:

StringBuffer buffer = new StringBuffer("hello,");    // 创建一个 StringBuffer 对象
String str = "World!";
buffer.append(str);    // 向 StringBuffer 对象追加 str 字符串
System.out.println(buffer.substring(0));    // 输出:Hello,World!

下面给出具体demo实例:

public class Testl9 {
    public static void main(String[] args) {
        StringBuffer sys = new StringBuffer("校内课程管理");
        System.out.println("欢迎进入《"+sys+"》系统");
        // 声明课程名称字符串
        StringBuffer courseName = new StringBuffer();
        System.out.println("请录入本期的五门必修课名称:");
        Scanner input = new Scanner(System.in);
        // 循环接收控制台输入的字符串
        String name = "";
        for (int i = 0;i < 5;i++) {
            name = input.next();
            courseName.append(name+"\t");
            if(i == 4) {
                System.out.println("录入完毕!");
            }
        }
        System.out.println("本学期的必修课程有:\n"+courseName);
}

该程序中,首先声明了一个空的StringBuffer对象,声明初始化courseName变量,存储用户从控制台输入的课程名称,接着使用for循环循环接受用户输入数据。利用append方法对用户输入的字符串进行追加。


三、替换字符

StringBuffer 类对象的setCharAt方法用于在字符串指定索引位置替换一个字符。该方法作用就是修改对象中索引值为index的字符为新的字符ch,如下所示:

StringBuffer sb = new StringBuffer("hello");
sb.setCharAt(1,'E');
System.out.println(sb);    // 输出:hEllo
sb.setCharAt(0,'H');
System.out.println(sb);    // 输出:HEllo
sb.setCharAt(2,'p');
System.out.println(sb);    // 输出:HEplo

四、反转字符串

StringBuffer 类中的 reverse() 方法用于将字符串序列用其反转的形式取代,该方法主要作用就是利用StringBuffer的reverse方法对字符串反转:

StringBuffer sb = new StringBuffer("java");
sb.reverse();
System.out.println(sb);    // 输出:avaj

五、删除字符串

1、delete方法

delete方法用于移除序列中字符串的字符。start标识要删除字符的起始索引数值,包括索引数值对应的字符,end标识要删除字符串的结束索引数值,不包含索引值对应的字符。该方法作用就是删除指定区域以内的字符:

StringBuffer sb = new StringBuffer("hello jack");
sb.delete(2,5);
System.out.println(sb);    // 输出:he jack
sb.delete(2,5);
System.out.println(sb);    // 输出:heck

2、deleteCharAt方法

deleteCharAt() 方法用于移除序列中指定位置的字符,该方法主要是用于删除指定位置的字符,剩余内容形成一个新的字符串。

StringBuffer sb = new StringBuffer("She");
sb.deleteCharAt(2);
System.out.println(sb);    // 输出:Sh