黑马程序员技术交流社区

标题: equals方法 [打印本页]

作者: 小五哥    时间: 2016-1-7 16:10
标题: equals方法
String s1=“abc”;
String s1=“abc”;
StringBuffer s3=new StringBuffer(“abc”);
StringBuffer s4=new StringBuffer(“abc”);
为什么String类调用equals方法结果为真,而StringBuffer为假?
作者: 正阳门下    时间: 2016-1-7 23:30
public boolean equals(Object anObject)将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
作者: 正阳门下    时间: 2016-1-7 23:31
因为string重写了equals方法比较的是字符串的内容;但是stringbuffer类没有重写equals而是继承Object的equals方法,比较的是两个地址值,所以是false
作者: 擎天柱    时间: 2016-1-7 23:55
String 重写了equals(),是基于值比较的;StringBuffer没有重写Object的equals(),是基于引用(地址)比较的
作者: 一大把手    时间: 2016-1-8 09:18
楼上解释的受教了
作者: hard    时间: 2016-1-8 09:22
stringbuffer是一个容器,string重新了equals方法,你可以去翻阅一下string和stringbuffer的源码去看一下
作者: justinwww    时间: 2016-1-8 22:54
一个是值得比较,一个是地址的比较




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2