Java字符串相关类StringBuffer的用法详解

 更新时间:2022年10月09日 16:27:58   作者:.29.  
java.lang包下的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());

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

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

    }

}

需要注意的是,此方法不是将指定位置内容完全由指定内容填充,而是直接将原本的内容替换成传入的指定内容,是可以造成下标位置变化的。

5.插入 StringBuffer insert(int offset, · · · )

使用insert(int offset , · · · )方法时,我们可以在指定下标位置的前面插入指定的内容,而内容对象的类型并不唯一,类似于上文将结果的append()方法中的参数。

效果案例:

/**
 * @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.insert(0,"a");
        System.out.println(sb_3.toString());
        sb_3.insert(1,"b");
        System.out.println(sb_3.toString());
        sb_3.insert(2,"c");
        System.out.println(sb_3.toString());
        sb_3.insert(3,"d");
        System.out.println(sb_3.toString());
        sb_3.insert(4,"e");
        System.out.println(sb_3.toString());
        sb_3.insert(5,"f");
        System.out.println(sb_3.toString());
        sb_3.insert(6,"g");
        System.out.println(sb_3.toString());

    }

}

6.反转 StringBuffer reverse()

reverse()方法可以将当前字符串序列的先后顺序反转过来,是十分常用的方法:

效果案例:

/**
 * @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.reverse();

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

    }

}

到此这篇关于Java字符串相关类StringBuffer的用法详解的文章就介绍到这了,更多相关Java StringBuffer内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA异常信息Exception e及e的相关方法解读

    JAVA异常信息Exception e及e的相关方法解读

    这篇文章主要介绍了JAVA异常信息Exception e及e的相关方法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Springboot启动原理和自动配置原理解析

    Springboot启动原理和自动配置原理解析

    这篇文章主要介绍了Springboot启动原理和自动配置原理解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Spring Boot异常处理静止trace

    Spring Boot异常处理静止trace

    这篇文章主要介绍了Spring Boot异常处理静止trace,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 两个jar包下相同包名类名引入冲突的解决方法

    两个jar包下相同包名类名引入冲突的解决方法

    本文主要介绍了两个jar包下相同包名类名引入冲突的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Java 条件控制与循环控制实例

    Java 条件控制与循环控制实例

    下面小编就为大家带来一篇Java 条件控制与循环控制实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • SpringBoot基于AbstractRoutingDataSource实现多数据源动态切换

    SpringBoot基于AbstractRoutingDataSource实现多数据源动态切换

    本文主要介绍了SpringBoot基于AbstractRoutingDataSource实现多数据源动态切换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • springboot 集成cas5.3 实现sso单点登录详细流程

    springboot 集成cas5.3 实现sso单点登录详细流程

    SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登录是目前比较流行的企业业务整合的解决方案之一,本文给大家介绍springboot 集成cas5.3 实现sso单点登录功能,感兴趣的朋友一起看看吧
    2021-10-10
  • Java中Stream流的常用方法代码示例

    Java中Stream流的常用方法代码示例

    这篇文章主要介绍了Java中Stream流的常用方法代码示例,Stream类中每一个方法都对应集合上的一种操作,将真正的函数式编程引入到Java中,能 让代码更加简洁,极大地简化了集合的处理操作,提高了开发的效率和生产力,需要的朋友可以参考下
    2023-10-10
  • springboot 中整合mybatis多数据源不使用JPA

    springboot 中整合mybatis多数据源不使用JPA

    这篇文章主要介绍了springboot 中整合mybatis多数据源不使用JPA,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 解析Java图形化编程中的文本框和文本区

    解析Java图形化编程中的文本框和文本区

    这篇文章主要介绍了Java图形化编程中的文本框和文本区,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10

最新评论