【JAVA基础】 StringBuffer :字符串的兄弟,你认识吗?_java 兄弟字符串

35 阅读5分钟

CSDN话题挑战赛第2期
参赛话题:学习笔记

在这里插入图片描述

在这里插入图片描述

字符串相关类StringBuffer


一、StringBuffer 介绍

java.lang包下的StringBuffer类,代表着可变的字符序列,可以用来对字符串内容进行增删改操作。同时它是线程安全的,效率称不上高。

StringBuffer类当中的许多方法都是与String相同的,是字符串相关的类,所以我称他为字符串的兄弟…。但是两兄弟也有本质的区别,String不可变的字符序列



二、方法详解

1.构造方法

当我们想要创建StringBuffer类型的对象,必须要使用到构造方法来生成,不同于String类型的可以直接用常量赋值。

接下来就让我来介绍一下StringBuffer的三个构造方法:


①StringBuffer()

使用空参构造方法来创建StringBuffer对象,在底层会得到一个初始化容量大小为 16
的字符换缓冲区,而且这个长度是可以不断扩容的,这也体现了可变字符序列的特性。

StringBuffer stringbuffer = new StringBuffer();


②StringBuffer(int size)

当我们需要创建StringBuffer对象时,可以在括号内指定一个大小,从而获得一个指定长度的字符串缓冲区。
比如我们将整数8作为参数传入就能在底层初始化一个容量为8的字符串缓冲区。

StringBuffer stringbuffer = new StringBuffer();


③StringBuffer(String str)

创建StringBuffer对象时,借助构造方法,我们还可以创建一个包含内容的可变字符串序列,只需要将想要的内容作为字符串传入即可;


我们可以传入一个String类型的对象传入:

String a = "abcd";
StringBuffer sb_1 = new StringBuffer(a);

也可以直接传入一个字符串常量:

StringBuffer sb_2 = new StringBuffer("abcd");

效果案例:

/\*\*
 \* @author .29.
 \* @create 2022-10-07 19:04
 \*/
public class StringBufferTest {
    public static void main(String[] args) {
        String a = "abcd";
        StringBuffer sb_1 = new StringBuffer(a);
        StringBuffer sb_2 = new StringBuffer("abcd");
        System.out.println(sb_1.toString());
        System.out.println(sb_2.toString());

    }

}


在这里插入图片描述


2.增 StringBuffer append(…)

StringBuffer类中提供了许多append()方法,可以用来对字符串进行拼接操作,我们可以来看一看:

在这里插入图片描述

通过上述列出来的实例中,我们可以知道,append()方法中,除了String类型外,无论是整形(int,long)、浮点型(float,double),还是布尔类型(boolean)也都可以作为参数传入的。

效果案例:


/\*\*
 \* @author .29.
 \* @create 2022-10-07 19:04
 \*/
public class StringBufferTest {
    public static void main(String[] args) {

        StringBuffer sb_3 = new StringBuffer();
        int A = 29;
        long B = 29L;
        float C = 2.9f;
        double D = 29.29;
        boolean E = true;

        sb_3.append(A);
        sb_3.append(" ");
        sb_3.append(B);
        sb_3.append(" ");
        sb_3.append(C);
        sb_3.append(" ");
        sb_3.append(D);
        sb_3.append(" ");
        sb_3.append(E);

        System.out.println(sb_3.toString());

    }

}

在这里插入图片描述


3.删 StringBuffer delete(int start,int end)

delete(int start,int end)方法可以用来删除指定位置的元素,删除元素的位置从start参数开始,到end参数前一个位置结束。

效果案例:

/\*\*
 \* @author .29.
 \* @create 2022-10-07 19:04
 \*/
public class StringBufferTest {
    public static void main(String[] args) {

        StringBuffer sb_3 = new StringBuffer("0123456789");

        sb_3.delete(0,6);

        System.out.println(sb_3.toString());

    }

}

我们指定从删除的位置从下标0开始,到下标6前一个位置结束

在这里插入图片描述


4.改 StringBuffer replace(int start,int end,String str)

这是将指定位置内容替换成指定内容的方法replace(int start,int end,String str),替换的位置依旧是从start下标开始,到end下标的前一个位置结束,也就是[start , end)

效果案例:

/\*\*
 \* @author .29.
 \* @create 2022-10-07 19:04
 \*/
public class StringBufferTest {
    public static void main(String[] args) {

        StringBuffer sb_3 = new StringBuffer("0123456789");

        System.out.println(sb_3.toString());

        sb_3.replace(1,9," ");

        System.out.println(sb_3.toString());


![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/4ec11c24b1644ec282e9a1925b4e3f46~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771252316&x-signature=6343lTyPjW2Pofsh6DkAHQPhcuY%3D)
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3fdec45028574d0194b68ee81da3903e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771252316&x-signature=KR6UF0wGzuKG%2BcAzRZpH6lj7VHM%3D)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://gitee.com/vip204888)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**