Java StringBuffer 和 StringBuilder 类

81 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情

Java StringBuffer 和 StringBuilder 类

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。

实例

public class RunoobTest{ 
    public static void main(String args[]){ 
        StringBuilder stringbuilder = new StringBuilder(10); 
        stringbuilder.append("A.B.C.."); 
        System.out.println(stringbuilder);
        stringbuilder.append("!"); 
        System.out.println(stringbuilder);
        stringbuilder.insert(6, "Java");
        System.out.println(stringbuilder);
        stringbuilder.delete(4,7); 
        System.out.println(stringbuilder); 
    } 
}

以上实例编译运行结果如下:

A.B.C..
A.B.C..!
A.B.C..Java!
A.B.CJava!

然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

Test.java 文件代码:

public class Test{ 
    public static void main(String args[]){
        StringBuffer stringbuffer = new StringBuffer("百度网址:");
        stringbuffer.append("www"); 
        stringbuffer.append(".baidu");
        stringbuffer.append(".com");
        System.out.println(stringbuffer);
    }
}

以上实例编译运行结果如下:

百度网址:www.baidu.com

StringBuffer 方法

以下是 StringBuffer 类支持的主要方法:

序号方法描述
1public StringBuffer append(String s) 将指定的字符串追加到此字符序列。
2public StringBuffer reverse()  将此字符序列用其反转形式取代。
3public delete(int start, int end) 移除此序列的子字符串中的字符。
4public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。
5insert(int offset, String str) 将 str 参数的字符串插入此序列中。
6replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。