String和StringBuffer的区别
这两个类都实现了CharSequence接口
。
类型不同
,因为不是一个类,也没有继承关系,做参数时不能共用String对象是不可变对象,不能修改值。而StringBuffer是可变对象,能修改值
。拼接字符串时,String会产生新对象
,而StringBuffer只是增加新字符,不产生新对象,因此效率高。String覆盖了equals方法和hashCode方法
,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题
。
34.1、StringBuffer和StringBuilder的区别
相同之处,这两类都是可变长的字符串存储类,都实现了CharSequence接口
类型不同
,因为不是一个类,也没有继承关系,做参数时不能共用StringBuffer为线程安全类,StringBuilder为线程非安全类
StringBuffer性能低,StringBuilder性能高
,如果在局部优先使用StringBuilder