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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马小夏 中级黑马   /  2015-3-8 09:26  /  977 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

经常看到这两个做比较,真分不清什么时候equalsl与==有什么区别?求详细讲解

点评

一个是重写的方法,一个是对象引用  发表于 2015-3-8 09:32

4 个回复

倒序浏览
只要是对象类型  那么“==”比的都是地址!  只有基本类型  比如说是int float比较的才是值。  equals在默认的情况下  比较的也是对象的地址  只有你的子类重写了equals方法   系统才会按照子类的equals定义比较对象 那为什么String对象equals也可以比较值呢?  原因是String对象已经重写了equals方法
回复 使用道具 举报
Object 类中有这个equals方法,仅仅是比较两个变量的内存地址值,其他的类就要看,该类有没有复写Object类中的equals方法,其中String类中复写了这个方法,是比较两个字符串的内容。至于你说的"=="要看比较的双方,
如果是对象,那就是比较内存地址值,如果是基本数据类型,那就是比较内容即值。
回复 使用道具 举报 1 0
123412 发表于 2015-3-8 12:07
Object 类中有这个equals方法,仅仅是比较两个变量的内存地址值,其他的类就要看,该类有没有复写Object类 ...

好像明白点了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马