黑马程序员技术交流社区
标题:
String类和StringBuffer类
[打印本页]
作者:
朱玲均
时间:
2011-7-18 09:18
标题:
String类和StringBuffer类
我们知道当比较两个对象的时候,调用equals方法判断两个对象的值是否相等。
但是查阅API文档,为什么String类覆盖了Object类的equals方法,而StringBuffer类却没有覆盖Object类的equals方法?
要是判断两个StringBuffer对象的内容是否相等的时候,还要自己手写覆盖equals方法,这多麻烦。
作者:
匿名
时间:
2011-7-18 09:45
标题:
String类和StringBuffer类
String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 所以比较的时候需要覆盖Object类的equals方法,而StringBuffer 是可变的,所以比较时要进行对象比较。
作者:
匿名
时间:
2011-7-18 10:21
[font=Verdana][size=3] equals方法是属于类String的,而不属于类StringBuffer。[/size][/font]
[font=Verdana][size=3] 因此equals方法就只能操作String类型的对象,而不能操作StringBuffer类型的对象。[/size][/font][font=Verdana][size=3]也就是StringBuffer里没有equals方法,如果直接使用是比较地址,可以在后面加上toString()即可,就可以比较对象的值了。[/size][/font]
[font=Verdana][size=3] 比如:StringBuffer sb1 =new StringBuffer("123");[/size][/font]
[font=Verdana][size=3] StringBuffer sb2 =new StringBuffer("123");[/size][/font]
[font=Verdana][size=3] 判断:sb.toString().equals(sb2.toString)[/size][/font]
[font=Verdana][size=3][/size][/font]
作者:
匿名
时间:
2011-7-18 10:47
equals方法比较的是两个对象的类型是否相同并且对象的内容是否相同,
同时,应该在用这个方法之前,查看一下此方法是否重写了Object这个类的equals和hashcode方法。
StringBuffer类对这两个方法都没有重写。而String重写了这两个方法。
正如楼上所说:可以用StringBuffer的toString方法来比较。
作者:
匿名
时间:
2011-7-18 10:57
你既然查了API文档就应该知道String 类是final修饰的,也就是说String类是不可变的,你想重写的机会都没有
StringBuffer 是没有实现线程安全的,性能高,每种情况实现equals标准不一,也就不需要提供,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2