此页内容

012、String、StringBuffer、StringBuilder的区别

248字小于1分钟

2025-03-05

三者都是 Java 中处理字符串中的类,区别主要如下:

  1. String

    • 不可变:String 是一个不可变类,一经创建就不能再发生改变,因此每次对 String 对象进行修改(如拼接、裁切等),都会创建新的对象;
    • 适合场景:字符串内容不会频繁改变的场景,如少量字符串拼接或字符串常量。
  2. StringBuffer

    • 可变:可以进行字符串的追加、修改、插入等操作;

    • 线程安全:内部使用了 synchronized 关键字来保证多线程环境下的安全性;

    • 适合场景:多线程环境中需要频繁修改字符串的场景。

  3. StringBuilder

    • 可变:可以进行字符串的追加、修改、插入等操作;

    • 线程不安全:线程不安全,但是性能比 StringBuffer 高;

    • 适合场景:单线程环境中需要频繁修改字符串的场景。