44.String、StringBuffer和StringBuilder的区别?分别在哪些场景下使用?
三者都是final,不允许被继承
在本质上都是char[]字符数组实现
String、StringBuffer与StringBuilder中,String是不可变对象,另外两个是可变的。
Stringbuilder 效率更快,因为他不需要加锁,不具备多线程安全。
Stringbuffer 里面操作方法用synchronized,效率相对更低,是线程安全的。
使用场景: 操作少量的数据用String,但是常改变内容且操作数据多情况下最好不要用String,因为每次生成中间对象性能会降低。
单线程下操作大量字符串用Stringbuilder,虽然线程不安全但是不影响。
多线程下操作大量字符串,且需要保证线程安全,则用StringBuffer。