Java 中的 StringBuilder 类
🍾字符串拼接问题
由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。例如:
在 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 容器,并将字符串添加进去。
🍹常用方法
StringBuilder 常用的方法有 2 个:
public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
public String toString():将当前 StringBuilder 对象转换为 String 对象。
🍺append 方法
append 方法具有多种重载形式,可以接收任意类型的参数。任何数据作为参数都会将对应的字符串内容添加到 StringBuilder 中。例如:
📌备注:StringBuilder 已经覆盖重写了 Object 当中的 toString 方法。
🍻toString 方法
通过 toString 方法,StringBuilder 对象将会转换为不可变的 String 对象。如:
本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃
版权声明: 本文为 InfoQ 作者【共饮一杯无】的原创文章。
原文链接:【http://xie.infoq.cn/article/77d1e26cff0e0589203046cb3】。文章转载请联系作者。
评论