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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付鹏 中级黑马   /  2012-3-8 23:24  /  2203 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我搞不懂这两个有什么区别。去网上搜了搜看了看还是看不懂, 谁理解的透彻 能给我用白话解释解释吗?

9 个回复

倒序浏览
equals方法是objec类中的一个方法,所有的类都有这一方法。他是一个方法。而“==”是一个比较运算符!
在不对equals进行覆盖的情况下,equals和“==”实现的功能是一样的。
但是,一般在应用时,我们会对equals方法进行覆盖,让它提供其他与比较相等相关的功能。

评分

参与人数 1技术分 +2 收起 理由
职业规划-刘倩老师 + 2 赞一个!

查看全部评分

回复 使用道具 举报
equals用了引用数据类型、==用于基本数据类型
回复 使用道具 举报
对于String,==用于比较两个String是否指向同一个地址空间;equal用于对String的值进行比较,它是逐个字符来比较ascii码值的,当然对于大小写字母它与进行区分
回复 使用道具 举报
equals()方法是Object类方法,所以所有的类自然而然的继承了equals方法。Object类中的equals方法是对象地址,如果是同一个对象返回值为true,否则是false;如果其他类没有改写equals方法,那么默认的还是比较对象的地址。在String中,equals方法被重写,equals比较的是字符串的实际值,而不是比较对象的地址。我们初学Java的人,往往‘喜欢’用“==”来比较String类型的对象。记住只有是比较String类型的用equals方法就可以了。
回复 使用道具 举报

equals()应按需覆写

本帖最后由 许圣建 于 2012-3-9 00:02 编辑

首先,==是个运算符,在java中运算符不能被覆写,所以==只有一个含义,比较栈中二者之value,引用变量也是变量,当然比较地址值。
接着,equals()方法定义在上帝之中,上帝谁会创建对象去用呢,就像接口的方法只是方法的接口一样,肯定要继承,这时候你就要注意了,你究竟希望用到怎样的equals()方法在你的类之中,如果你不覆写,你的父类也没有覆写过,那么你直接继承的就是父类的比较二者之值的(等同于==),所以很多java自己的类都实现了通用的equals(),但并不排除你自己有自己的计划,
所以按需覆写才是equals()的使用方法。
回复 使用道具 举报
equals()方法是引用类型 是Objec中的方法,每个类都有默认的equals()方法,在不被重写的情况下,默认的是比较对象的地址值,被重写后是比较对象的内容;
==是个运算符,只是比较是否相等;
回复 使用道具 举报
给你个最简单的理解    ==是比较运算符 比较两边  看结果是否为真或者假
                             equals  可以理解  左边的对象内容是否等于右边的内容  
比如 String a="abc";  a.equals("abc");     就是判断a对象中存储的内容是否是abc字符串
  
回复 使用道具 举报
袁野 黑马帝 2012-3-9 11:46:34
9#
equals 比较的是俩个引用类型的对象地址是不是相同, == 是基本数据类型 比较俩个数值是不是相等
回复 使用道具 举报
equals()方法是用来检测两个对象的内容是否相等 ,而==的比较分两种:一种是比较基本数据类型,例如int,那么比较的就是基本数据类型的值;   
如果比较的是对象,例如String,那么比较的是两个句柄是否指向内存中的同一个对象。!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马