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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© danmo 中级黑马   /  2014-8-19 18:58  /  1737 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

中对象与变量的比较是经常用到“==”和“equals”两种方法来比较,请教,两种方式有什么区别?

15 个回复

倒序浏览
==比较的是对象引用的地址值,equals比较的是两者的内容
回复 使用道具 举报
equals比较是看对象的equals()方法比较的标准是什么
回复 使用道具 举报
==比较地址值,equals在重写后可比较内容
回复 使用道具 举报
==比较的是内存地址,equals比较的是相同,也就是样子一样。
回复 使用道具 举报
子阳zy 来自手机 中级黑马 2014-8-20 00:07:08
地板
含义不同,楼上说的很对。
回复 使用道具 举报
EQUALS用来比较对象是否相等,==还可以比较基本数据类型吧 。我觉得
回复 使用道具 举报
日经贴。。。。。
回复 使用道具 举报
每天都有这个问题貌似 {:3_50:}
回复 使用道具 举报
上课老师给的总结:
==和equals()的区别?
                        A:==
                                基本类型:比较的是基本类型的值是否相同
                                引用类型:比较的是对象的地址值是否相同
                        B:equals()
                                默认情况下,比较对象的地址值。
                                如果重写了该方法,那么,什么作用请看自己的代码
回复 使用道具 举报
danmo 中级黑马 2014-8-20 10:42:54
11#
谢谢 楼上的简答
回复 使用道具 举报
路过。。。
回复 使用道具 举报
==可以用来比较基本数据类型.....比如   a == b; 这是比较数值
==和equals在对象中的话,==比较的是地址值(就好像两个人是不是同一家,长的像不像没有关系).而equals比较的是两者的内容(比如两个人长的像就好了,不管他是不是一家人).
回复 使用道具 举报
分两部分:
1、比较双方是基本数据类型:==和equals方法是等价的(object类中的equals方法就是使用==进行判断的!)
2、比较双方是引用数据类型:          解读:Person p1=new Person("Peter");
           new Person("Peter"):在内存中开辟一空间(有new就有新空间),存储Peter这个实例对象;然后将Peter的内存地址值赋值给p1;也就是说p1存储的是内存地址值!
           当Person p2=new Person("Peter");
          那么p1和p2代表的就是2个内存地址值,p1==p2显然就是错误的(很多人理解==说比较的是内存地址值,也没错,但我认为==就是比较左右两边的数值是否一样的一个判断符,和数学里的=号是一个意思)
           equals比较的是什么,就要看Person类里是否复写Object类的equals方法,比如在Person类中复写了equals方法并用Person的名字来判断两个Person是否相等,那么p1.equals(p2)当然就是true了         

           简而言之:
         若是对象所在的类或是其父类(不包含object类)没有复写object类中的equals方法;那么==和equals就是等价的;否则就看对象所在类中equals方法是如何复写的!

回复 使用道具 举报
男人你得有范 来自手机 中级黑马 2014-8-20 15:37:45
15#
赞同一楼
回复 使用道具 举报
总结equals和"=="的关系
http://bbs.itheima.com/thread-136188-1-1.html
(出处: 黑马程序员IT技术论坛)
  可以看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马