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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhrnghgwsws 中级黑马   /  2014-5-23 13:32  /  2491 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

问题://if(field.getType().equals(String.class))
//对于字节码的比较用==,用equals也能比,但不科学。因为字节码只有一份。
当时老师是这样讲的。
之前我的理解是==用于比较栈内存中数据,而equals是用于比较堆内存的数据,
那么关于此题中的==和equals,的区别用法,总感觉理解起来比较别扭。
想问一下各位大神门是怎么理解的?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

8 个回复

倒序浏览
Object类中的
equals 方法在非空对象引用上实现相等关系:
  • 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
  • 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
  • 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
  • 一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
  • 对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。


总结:Object中的equals比较内容是否相同
           ==比较 的是是否是同一个对象,也就是比较的是两个对象的地址


equals为true时,==不一定为true

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报 1 0
看到有点晕。。
回复 使用道具 举报
==内部不就是调用原始的equal么
回复 使用道具 举报
== 内存地址做比较  equals 内存中的内容  进行比较
回复 使用道具 举报
给同学打一个比喻吧,
比如说,上体育课,第一次排队,你站在第一个位置,第二次排队,你站在第三个位置,那么按照equals方法来讲的话,其实都是你本人,因为实质没有发生变化,因而用equals判断,你还是你.
而如果用==比较呢,你就不相等了,因为你两次课站在不同的位置,这就是==,比较的是你站在内存中的地址是否相同
回复 使用道具 举报
总之,我觉得==实际上是比较变量的地址,而equals是比较变量的内容,接下来就看你要比较什么再用了
回复 使用道具 举报
学习了,都是高手啊
回复 使用道具 举报
==是比较两个地址值是否相等  equals比较的是内容是否相等
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马