Java 中stringbuilder 和 stringbuffer区别

前言

          由于 String存放字符的数组是被final修饰的,因此只能被赋值一次,不能修改,

          因此String字符串在每次连接时都需要构建新的String对象,既费时又浪费空间;

          在需要多次进行字符串拼接时,使用 StringBuffer 或 StringBuilder 类更为合适一些;


那么下面 我们来看一下 这两个类 有什么区别

  1. StringBuffer 和 StringBuilder 都是可变的字符串,也就是说,在对字符串进行操作时不会产生新的对象。
  2. StringBuffer 和 StringBuilder 类的调用的方法都是一样的,不同的是,StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 中的方法没有被synchronized  修饰。(synchronized 修饰的类或变量等只能被单线程访问)
  3. 由于 StringBuilder 中的方法没有被synchronized 修饰,就性能上来说,它的效率要高一些;

总结

  • 效率 :StringBuilder > StringBuffer
  • 安全 :StringBuffer > StringBuilder

在更改次数较少时考虑使用 String;

在单线程大量操作数据时,考虑使用 StringBuilder ;

在多线程大量操作数据时,考虑使用 StringBuffer ;

你可能感兴趣的:(java)