走稳了,跑起来更快
区别:
- 三者都是final关键字修饰的, 不允许被继承
- 在本质都是char[]字符数组实现
- String是不可变对象,StringBuffer与StringBuilder是可变的
- StringBuilder 效率更快,因为它不需要加锁,线程不安全
- StringBuffer⾥⾯操作⽅法⽤synchronized ,效率相对更低,是线程安全的
使⽤场景:
- 操作少量的数据⽤String,但是常改变内容且操作数据多情况下最好不要⽤ String ,因为每次⽣成中间对象性能会降低
- 单线程下操作⼤量的字符串⽤StringBuilder,虽然线程不安全但是不影响
- 多线程下操作⼤量的字符串,且需要保证线程安全 则⽤StringBuffer