A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小五哥 中级黑马   /  2016-1-7 16:10  /  974 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s1=“abc”;
String s1=“abc”;
StringBuffer s3=new StringBuffer(“abc”);
StringBuffer s4=new StringBuffer(“abc”);
为什么String类调用equals方法结果为真,而StringBuffer为假?

6 个回复

倒序浏览
public boolean equals(Object anObject)将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
回复 使用道具 举报
因为string重写了equals方法比较的是字符串的内容;但是stringbuffer类没有重写equals而是继承Object的equals方法,比较的是两个地址值,所以是false
回复 使用道具 举报
String 重写了equals(),是基于值比较的;StringBuffer没有重写Object的equals(),是基于引用(地址)比较的
回复 使用道具 举报
楼上解释的受教了
回复 使用道具 举报
stringbuffer是一个容器,string重新了equals方法,你可以去翻阅一下string和stringbuffer的源码去看一下
回复 使用道具 举报
一个是值得比较,一个是地址的比较
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马