字符串缓冲区和StringBuilder都是可变类,可用于对字符串对象执行操作,例如字符串的反向,压缩字符串等。我们可以在不创建字符串新对象的情况下修改字符串。字符串缓冲区是线程安全的,而字符串生成器不是线程安全的。因此,它比字符串缓冲区快。另外,字符串concat +运算符在内部使用StringBuffer或StringBuilder类。以下是区别。
序号 | 键 | 字符串缓冲区 | 字符串生成器 |
---|---|---|---|
1 | 基本 | 在 Java 的初始版本中引入了 StringBuffer | 它是在Java 5中引入的 |
2 | 同步 | 它是同步的 | 不同步 |
3 | 性能 | 它是线程安全的。因此,多个线程不能同时访问,因此速度很慢。 | 它不是线程安全的,因此比字符串缓冲区快 |
4 | 可变 | 它是可变的。我们可以修改字符串而不创建对象 | 它也是可变的 |
5 | 存储 | 堆 | 堆 |
public class StringBuilderExample{ public static void main(String[] args){ StringBuilder builder=new StringBuilder("Hi"); builder.append("Java 8"); System.out.println("StringBuilderExample" +builder); } }
public class StringBufferExample{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer("Hi"); buffer.append("Java 8"); System.out.println("StringBufferExample" +buffer); } }