String、StringBuilder、StringBuffer
String
- class 类被 final 修饰,无法被继承
- 在 jdk1.8 之前及 jdk1.8 底层使用 char 数组进行存储,在 jdk1.8 之后使用 byte 数组进行存储
StringBuilder
- 特点:可变长度的字符串,同样被final修饰,底层是使用 char 数组或者 byte 数组进行存储,线程不安全
- 初始容量:空参构造时容量为16。有参构造时,当参数为 int 则容量为参数值,当参数为 String 类型或 CharSequence 类型时则初始容量为 String.length() + 16。
- 自动扩容机制:当 String Builder 中的 char 或 byte 数组容量充足时,则自动将需要拼接的字符串置于数组中进行拼接;如果数组容量不足时,则通过计算得出数组最小需要长度,并将旧数据 copy 一份置于新数组,再进行拼接
StringBuffer
- 特点:可变长度的字符串,同样被final修饰,底层是使用 char 数组或者 byte 数组进行存储,但是线程安全,但是方法使用 synchronized 关键字进行修饰,效率较差
- 初始容量:与 StringBuilder 相同
- 自动扩容机制:与 StringBuilder 相同
String、StringBuilder、StringBuffer
https://xsinxcos.github.io/2024/03/01/JAVA源码学习:lang篇(1)/