JAVA中StringBuffer、StringBuilder、String的区别

182 阅读1分钟
  1. String String属于字符串常量,每次进行增添操作,需要开辟两块内存空间。 image.png

    对 “world”开辟一块空间、对“hello world”开辟一块空间。

  2. StringBuilder和StringBuffer StringBuilder和StringBuffer属于字符串变量,在进行字符串更新操作时不会开辟新的空间,区别在于StringBuilder速度更快,但不是线程安全。

    &bnsp;速度是否线程安全是否推荐
    StringBuilderfaster
    StringBufferfast
  3. 继承结构

    image.png

  4. 字符串拼接(字节码层面分析)

  • 都是常量进行拼接,在编译成字节码的时候会自动生成;

  • 存在变量的时候,会优化成StringBuilder.append();

      在拼接都是常量的时候,使用String性能最高,在有变量的时候使用
      StringBuilder性能比较好,在多线程安全情况下,使用StringBuffer是最合
      适的。切记不要在循环里面使用String拼接变量。