#Java基础# String、StringBuilder、StringBuffer 区别

103 阅读1分钟

线程安全

线程安全线程不安全
StringBufferString, StringBuilder

StringBuffer 线程安全的原因

  • 方法声明时,用 synchronized 修饰
    • 同一个实例,同一个方法,不能被两个调用者同时使用


长度可变

长度可变|长度不可变 StringBuffer, StringBuilder | String

长度可变与不可变的原因

  • String 长度不可变原因
    • 创建时,内部声明的字符数组 final char[] value 为长度不可变数组
  • StringBuffer, StringBuilder 长度可变的原因
    • 创建时,内部声明的字符数组 char[] value 为长度可变数组

运行速度 SringBuilder > StringBuffer > String

  • String 每次改变值,需要重新创建一个实例

  • StringBuffer 操作的方法,加上了同步锁 synchronized

  • StringBuilder 方法没有同步锁


不可继承重写

String\StringBuffer\StringBuilde 均使用final,为最终类不可以改写