补充知识:
String类:
字符串是常量; 它们的值在创建后就不能发生更改.
字符串的底层是一个被 final 修饰的数组, 不能改变, 是一个常量
底层源码: private final byte[] value;
所以在进行字符串的相加,内存中就会有多个字符串,占用的空间很多,效率低下
例如: String s = "a" + " b" + "c" ---> s = "abc";
但是在内存中会有: 字符串"a", "b","c" ,"ab","abc" 这5个字符串,所以导致效率低下
StringBuilder类:
字符串缓冲区, 可以提高字符串的操作效率(可以理解成一个长度可以变化的字符串)
底层也是一个数组, 但是没有被 final 修饰, 可以改变长度,是实时变化的,可以及时的更新
它在内存中始终是一个数组, 占用空间少, 效率高, 默认16字符空间
如果超出了StringBuilder的容量, 它会自己扩容一倍, 原理如下图所示
StringBuilder 原理图:

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

代码实现:

常用成员方法
public StringBuilder append(...)
:添加任意类型数据的字符串形式,并返回当前对象自身。public String toString()
:将当前StringBuilder对象转换为String对象。
public StringBuilder append(…)`:添加任意类型数据的字符串形式,并返回当前对象自身。
注意:append 方法返回的是 自己本身, 即 this, 所以不需要接收返回值


代码实现:

public String toString():将当前StringBuilder对象转换为String对象。
即实现了String 和 StringBuilder 可以相互转换
String --> StringBuilder : 可以使用 StringBuilder的构造方法实现
StringBuilder --> String : 可以使用 StringBuilder中的toString方法
代码实现:
