首页 > 编程笔记 > Java笔记 阅读:16

Java StringBuffer类用法详解(附带实例)

Java 中的 StringBuffer 类与 String 类一样都是用来存储字符串的,区别在于 String 类创建的字符串不可变,内容一经定义便不可更改,每次更改 String 对象的值都需要开辟新的空间,而 StringBuffer 对象的空间开辟后内容是可以改变的,且容量会随着存放的字符增加而自动增加。

Java创建StringBuffer对象

创建一个新的 StringBuffer 对象,必须通过 new 的形式进行,不像 String 对象可以用 new 也可以直接用“=”赋值常量。

StringBuffer 类的常用构造方法如下表所示:

表:StringBuffer类的构造方法
方法 方法描述
StringBuffer() 创建一个没有初始值的字符串
StringBuffer(String str) 创建一个带有初始值的字符串
StringBuffer(int capacity) 创建一个定义了初始空间的空字符串

接下来,通过案例来演示 StringBuffer 对象的多种创建方式:
public class Demo {
    public static void main(String[] args) {
        StringBuffer str = new StringBuffer();
        System.out.println("没有初始值的构造方法:" + str.length());
       
        StringBuffer str2 = new StringBuffer("C语言中文网");
        System.out.println("带有初始值的构造方法:" + str2.length());
       
        StringBuffer str3 = new StringBuffer(10);
        System.out.println("初始容量为10,实际长度为:" + str3.length());
    }
}
程序的运行结果如下:

没有初始值的构造方法:0
带有初始值的构造方法:6
初始容量为10,实际长度为:0

程序中带有初始空间的字符串仅仅只是定义了初始空间,真实的字符串长度仍然是 0。

Java StringBuffer类常用方法

StringBuffer 类提供了多种方法,如查找方法、替换方法、拆分方法等,这些方法在使用上与 String 类所提供的方法差别不大。

方法 功能描述
int length() 返回 StringBuffer 的长度
char charAt(int index) 返回字符串中指定位置的字符
StringBuffer append(String str) 追加字符
StringBuffer delete(int start,int end) 删除指定区间内的字符
StringBuffer deleteCharAt(int index) 删除指定位置的字符
StringBuffer replace(int start,int end,String str) 将指定区间内的值替换为 str
String substring(int start) 截取字符串从指定位置开始到结尾
String substring(int start,int end) 截取字符串从指定位置开始到指定位置结束
StringBuffer insert(int offset,String str) 向指定位置插入 str
int indexOf(String str) 从头开始查找指定字符的位置
int indexOf(String str,int index) 从指定位置开始查找指定字符的位置
StringBuffer reverse() 进行反转
String toString() 返回 StringBuffer 对应的 String

接下来,通过案例来演示 StringBuffer 类的上述方法的使用:
public class Demo {
    public static void main(String[] args) {
        StringBuffer str = new StringBuffer("C语言中文网,");
        System.out.println("创建的str对象:" + str);
        str.append("专注编程教育");  // 追加字符串
        str.append(14);  // 追加数字
        str.append('年');  // 追加字符
        System.out.println("追加后的结果:" + str);
        System.out.println("----------------------------");
        str.insert(13, "已经");
        System.out.println("insert插入后结果:" + str);
        System.out.println("----------------------------");
        StringBuffer str2 = new StringBuffer("C语言中文网");
        str2.reverse();
        System.out.println("C语言中文网反转后结果:" + str2);
        System.out.println("-----------------------------");
        StringBuffer stringBuffer = new StringBuffer("0123456789");
        stringBuffer.delete(4, 8);
        System.out.println("delete(4,8):" + stringBuffer);
        stringBuffer = new StringBuffer("0123456789");
        stringBuffer.delete(4, 10);
        System.out.println("delete(4,10):" + stringBuffer);
    }
}
程序的运行结果如下:

创建的str对象:C语言中文网,
追加后的结果:C语言中文网,专注编程教育14年
----------------------------
insert插入后结果:C语言中文网,专注编程教育已经14年
----------------------------
C语言中文网反转后结果:网文中言语C
-----------------------------
delete(4,8):012389
delete(4,10):0123

Java 中除了 StringBuffer 类可以处理可变字符串之外,它还有一个 StringBuilder 类。它是 StringBuffer 类的简化,使用方法基本一样。需要注意的是,StringBuilder类的速度快,但线程安全性差。

相关文章