1.jpg

走稳了,跑起来更快


区别:

  • 三者都是final关键字修饰的, 不允许被继承
  • 在本质都是char[]字符数组实现
  • String是不可变对象,StringBuffer与StringBuilder是可变的
  • StringBuilder 效率更快,因为它不需要加锁,线程不安全
  • StringBuffer⾥⾯操作⽅法⽤synchronized ,效率相对更低,是线程安全的

使⽤场景:

  • 操作少量的数据⽤String,但是常改变内容且操作数据多情况下最好不要⽤ String ,因为每次⽣成中间对象性能会降低
  • 单线程下操作⼤量的字符串⽤StringBuilder,虽然线程不安全但是不影响
  • 多线程下操作⼤量的字符串,且需要保证线程安全 则⽤StringBuffer