equals()和==的区别?

在判断值上和判断对象上... 在判断值上和判断对象上 展开
 我来答
wangzhirong57
2008-12-30 · TA获得超过4672个赞
知道小有建树答主
回答量:541
采纳率:0%
帮助的人:837万
展开全部
本人不才,现在我来对前面几个人的回答都做补充,呵呵,因为发现他们有不严谨的地方:

1楼: equals()比较的是对象的值,==比较的是对象的地址。 这句话答得没错! 但 这不是String的区别,所有对象都有这区别
如果你不信,随便生成一个Object obj 它就有方法可以obj.equals(...);
也就是说equals方法是从Object继承来的,Java中任何对象都自动有这个方法;

2楼: equals()方法是可以重写的,是正确的.very good

3楼: 这种说法不对。重写equals方法不一定要重写hashCode方法,重写hashCode()方法的目的是给每个对象提供一个不重复的hash码(类似于id),因为得到这个id值后而这个id值又不会和其它对象重复,所以就可以拿这个id来做比值从而返回equals的值
; 但是我们完全可以不用这个hash码来做比较而可以只凭我们的逻辑来判断。

4楼: 这种说法不对! == 和equals 没有谁比谁优先高级之说,他们是干不同活用的, 你想用谁就用谁,适合不同的情境和地方。

5楼: 这种说法不对!==不是判断对象是否相等,是判断两个对象所引用的内存地址是否是相同的。 另外 .equals()方法绝对不是判断字符串是否相等用的! 这是严重错误, 任何一个Object都有equals方法。不单单是字符串!

这两个概念很简单,但总是能混淆广大程序爱好者,建议大家好好打好基本功。 把概念要弄清楚。
名片
2024-10-28 广告
作为优菁科技(上海)有限公司的一员,Altair HyperWorks是我们重点代理的CAE软件套件。该软件以其全面的仿真能力、丰富的建模工具和高效的优化设计功能著称,广泛应用于汽车、航空航天、能源及电子等行业。HyperWorks通过集成... 点击进入详情页
本回答由名片提供
寸嘉费莫笑天
2020-05-24 · TA获得超过3846个赞
知道大有可为答主
回答量:3063
采纳率:31%
帮助的人:222万
展开全部
一楼二楼你们确定你懂了,不确定别说,因为这样很容易误导新手,他本来就不是很懂,再解释个错的让他怎么能想通。
我来回答:1.对于基本数据类型,只有==,没有equals()(注意string类型不是基本数据类型),所以很明显值相等就为true。
2.对于字符串,==指比较两者的内存地址,equals()则重写了object类的equals(),比较的是内容,你可以查看api看看它怎么重写的。对于字符串是存放在方法区的字符串常量池里的,无论定义多少,只要字符串值相等都指同一块内存地址,所以==和equals()结果没区别。
3.对于实例对象而言,==比较的依然是内存地址(所以你可以看出无论什么情况,==一直比较的都是内存地址),而equals()默认重写object类的equals()方法(比较地址)。但是一般我们会自己重写equals(),让它比较值是否相等。
4.建议:和四楼一样,建议你学完“内存地址”和“重写”的内容,再回过头来看这一知识点,就能深刻明晰了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hl20913538
2008-12-30 · TA获得超过766个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:0
展开全部
主要是String的区别。
equals()比较的是对象的值,==比较的是对象的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
门恬淦澜
2020-02-03 · TA获得超过3642个赞
知道大有可为答主
回答量:3142
采纳率:30%
帮助的人:173万
展开全部
1、java中equals和==的区别
值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
  2、==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
  3、equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
  4、==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为true。
请采纳,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
科技探塔
2019-10-26 · TA获得超过3927个赞
知道大有可为答主
回答量:3203
采纳率:28%
帮助的人:231万
展开全部
==
比较的是两个变量本身的值。
对于对象变量来说(比如String类型的变量),比较的就是这个变量指向的对象所在的内存的地址。
因为equals来说,因为本身是一个方法,所以在类中重写该方法,达到各自的目的。
对于String来说,这个方法就是比较对象内存储的字符串是否相同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式