写点什么

Java 中的 StringBuilder 类

作者:共饮一杯无
  • 2022-11-28
    浙江
  • 本文字数:1744 字

    阅读完需:约 6 分钟

Java中的StringBuilder类

🍾字符串拼接问题

由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。例如:


public class StringDemo {    public static void main(String[] args) {        String s = "Hello";        s += "World";        System.out.println(s);    }}
复制代码


在 API 中对 String 类有这样的描述:字符串是常量,它们的值在创建后不能被更改。根据这句话分析我们的代码,其实总共产生了三个字符串,即"Hello"、"World"和"HelloWorld"。引用变量 s 首先指向 Hello 对象,最终指向拼接出来的新字符串对象,即 HelloWord 。由此可知,如果**对字符串进行拼接操作,每次拼接,都会构建一个新的 String 对象,既耗时,又浪费空间。**为了解决这一问题,可以使用 java.lang.StringBuilder 类。

🍷StringBuilder 概述

查阅 java.lang.StringBuilder 的 API,StringBuilder 又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。原来 StringBuilder 是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder 会自动维护数组的扩容。原理如下图所示:(默认 16 字符空间,超过自动扩充)


🍸构造方法

根据 StringBuilder 的 API 文档,常用构造方法有 2 个:


  • public StringBuilder():构造一个空的 StringBuilder 容器。

  • public StringBuilder(String str):构造一个 StringBuilder 容器,并将字符串添加进去。


public class StringBuilderDemo {    public static void main(String[] args) {        StringBuilder sb1 = new StringBuilder();        System.out.println(sb1); // (空白)        // 使用带参构造        StringBuilder sb2 = new StringBuilder("zjq");        System.out.println(sb2); // zjq    }}
复制代码

🍹常用方法

StringBuilder 常用的方法有 2 个:


  • public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。

  • public String toString():将当前 StringBuilder 对象转换为 String 对象。

🍺append 方法

append 方法具有多种重载形式,可以接收任意类型的参数。任何数据作为参数都会将对应的字符串内容添加到 StringBuilder 中。例如:


public class Demo02StringBuilder {    public static void main(String[] args) {        //创建对象        StringBuilder builder = new StringBuilder();        //public StringBuilder append(任意类型)        StringBuilder builder2 = builder.append("hello");        //对比一下        System.out.println("builder:"+builder);        System.out.println("builder2:"+builder2);        System.out.println(builder == builder2); //true        // 可以添加 任何类型        builder.append("hello");        builder.append("world");        builder.append(true);        builder.append(100);        // 在我们开发中,会遇到调用一个方法后,返回一个对象的情况。然后使用返回的对象继续调用方法。        // 这种时候,我们就可以把代码现在一起,如append方法一样,代码如下        //链式编程        builder.append("hello").append("world").append(true).append(100);        System.out.println("builder:"+builder);    }}
复制代码


📌备注:StringBuilder 已经覆盖重写了 Object 当中的 toString 方法。

🍻toString 方法

通过 toString 方法,StringBuilder 对象将会转换为不可变的 String 对象。如:


public class Demo16StringBuilder {    public static void main(String[] args) {        // 链式创建        StringBuilder sb = new StringBuilder("Hello").append("World").append("Zjq");        // 调用方法        String str = sb.toString();        System.out.println(str); // HelloWorldZjq    }}
复制代码


本文内容到此结束了,

如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。

如有错误❌疑问💬欢迎各位大佬指出。

主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

发布于: 刚刚阅读数: 7
用户头像

鲜衣怒马意气风发,愿你归来仍是少年。 2018-10-19 加入

全栈开发者,CSDN博客专家,51CTO 专家博主,阿里云专家博主,华为云享专家,持续输出干货,欢迎关注。

评论

发布
暂无评论
Java中的StringBuilder类_Java_共饮一杯无_InfoQ写作社区