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 中的 charbyte 数组容量充足时,则自动将需要拼接的字符串置于数组中进行拼接;如果数组容量不足时,则通过计算得出数组最小需要长度,并将旧数据 copy 一份置于新数组,再进行拼接

StringBuffer

  • 特点:可变长度的字符串,同样被final修饰,底层是使用 char 数组或者 byte 数组进行存储,但是线程安全,但是方法使用 synchronized 关键字进行修饰,效率较差
  • 初始容量:与 StringBuilder 相同
  • 自动扩容机制:与 StringBuilder 相同

String、StringBuilder、StringBuffer
https://xsinxcos.github.io/2024/03/01/JAVA源码学习:lang篇(1)/
作者
xsinxcos(涿)
发布于
2024年3月1日
许可协议