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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangkerui 中级黑马   /  2014-5-8 08:31  /  1031 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wangkerui 于 2014-5-8 17:58 编辑

== 和 equals 有什么区别啊,求指导!

4 个回复

倒序浏览
equals 方法是object中的方法,一些类比如String ArrayList等都会覆盖此方法的,方法一旦覆盖他们的实现原来肯定就一样,比较的东西自然就不一样了,所以equals比较的到底是什么东西,你只能去查看这个类中是否覆盖的这个方法,还有它的原代码是如何实现的,比如String类就覆盖了equals方法,比较的是2个字符串的内容是否相同。如果没覆盖,但是你又调用了,那用的就是object中的equals方法。
你也可以自己定义一个类,然后覆盖equals方法,里面写上你认为2个指向型引用或对象,该方法返回值为真的要求。比如你定义了1个person这个类,你可以把equals方法定义为name相同即返回真,或者age相同即返回为真,或者其它情况都行,随你自己便。但是如果2个person用“==”比较,返回的肯定是flase.

是不是可以这么理解,==比较的是地址,equals比较的是内容

而==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true

评分

参与人数 1技术分 +1 收起 理由
张然龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
“==”比较的是两个基本类型的数据或两个对象的引用(即存储对象的地址值)是否相等,而“equals”比较的是
两个独立对象的内容是否相同,可以自定义,例如String str1= new String("abc")和String str2= new String("abc"),System.out.println(str1 == str2)输出为false,而System.out.println(str1 .equals(str2))输出为true。
回复 使用道具 举报
最简单就是:
      ==是值比较(比较对象的首地址),同一对象才返回True
     equal是引用比较,内容相同就返回True
回复 使用道具 举报
== 比的是对象
equals比较的字符串
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马