黑马程序员技术交流社区

标题: equals和==还是有点混 [打印本页]

作者: 回天之力    时间: 2013-11-3 19:11
标题: equals和==还是有点混
本帖最后由 回天之力 于 2013-11-3 19:23 编辑


大家看我用红笔画出来的部分,为什么比老师比的时候用俩个比?还不是用相同的比?

哪位大牛能根据各种情况在这里总结一下吗?thanks

作者: 高亮亮    时间: 2013-11-3 19:18
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同
作者: joechen    时间: 2013-11-3 19:22
超类Object中equals用的就是==,在没用复写equals方法之前两个都是一样的看两个引用是否指向同一个对象。要是说错了,欢迎指正
作者: 回天之力    时间: 2013-11-3 19:26
要的不是这样的答案  这些在前面的帖子里都有  因为我有点时候看它们俩一样用 有时又不一样  所以又混了,能举多点例子    具体说明一下么
作者: ixiangfeng    时间: 2013-11-3 19:31
图片看不清 而且这两个东西的知识就那么两句话 你看懂那几句话我想就没问题了吧
作者: 帅气的冬瓜    时间: 2013-11-3 19:33
     你说的应该是这句吧:
    return this.name.equals(p.name) && this.age==p.age;
      首先判断hashcode的值是否相同,判断equals是否为true,不同,调用equals.要明白哈希表!
    左边比较的是地址值是否相同,右边比较的是值是否相等。
      




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