Bootstrap

Java:StringBuilder 和 StringBuffer类

一、概念

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

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

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

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

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


二、StringBuilder

具体看下列代码,详情看注释:

public class Test {
    public static void main(String[] args) {
        // 1、创建 StringBuilder 对象
        StringBuilder sb = new StringBuilder();
        
        // 2、添加元素
        sb.append("aaa");
        sb.append("bbb");
        sb.append("ccc");
        sb.append("ddd");
        
        // 3、元素反转
        sb.reverse();
        
        // 4、转成字符串,这样可以使用字符串类中的方法
        String str = sb.toString();
        System.out.println(str);
    }
}

运行结果:

dddcccbbbaaa

三、StringBuffer 类

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

public class Test {
    public static void main(String[] args) {
        // 1、创建 StringBuilder 对象
        StringBuffer sb = new StringBuffer();

        // 2、添加元素
        sb.append("aaa");
        sb.append("bbb");
        sb.append("ccc");
        sb.append("ddd");

        // 3、元素反转
        sb.reverse();

        // 4、转成字符串,这样可以使用字符串类中的方法
        String str = sb.toString();
        System.out.println(str);
    }
}

运行结果:

dddcccbbbaaa

;