先说StringBuilder和StringBuffer的区别:
StringBuilder是JDK1.5引入的,与StringBuffer几乎完全一样,唯一区别仅在于StringBuilder没有实现原StringBuffer的线程安全功能,故性能有所提高,以供重视性能而安全要求不高的场合选用。
String与StringBuilder和StringBuffer的区别:
- String用于处理常量字符串,而StringBuilder和StringBuffer则用于处理内容可变得字符串,这三个类都被声明为final,不能被继承。(因为StringBuilder和StringBuffer除了安全性能,几乎完全一样,所以下面StringBuffer和StringBuilder统称为StringBuffer)。
- String重写了从Object继承的equals方法,而StringBufffer没有。
- 因为String类只能处理常量字符串,所以不适合频繁的插入,删除和修改等操作,会产生大量String对象,内存消耗极大,这种情况应先转为StringBuffer。
- String对象之间可以用操作符“+”进行拼接,而StringBuffer对象不可以,但可以用append()方法。
但我知道这个知识点后,我做了一道面试题,让我有了直观的感受。(摘自LeetCode一道面试题)