equals()和==的区别?

来源:百度知道 编辑:UC知道 时间:2024/06/17 09:14:47
在判断值上和判断对象上

本人不才,现在我来对前面几个人的回答都做补充,呵呵,因为发现他们有不严谨的地方:

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方法。不单单是字符串!

这两个概念很简单,但总是能混淆广大程序爱好者,建议大家好好打好基本功。 把概念要弄清楚。

1楼的说法正确

不过有小问题纠正一下

equals()方法是可以重写的,也就是说,你的两个引用对象可以因为某一个值不同,或者所有值相同来返回false,你需要什么样的对象算相等,在equals()中就可以自行定义,所以说,这个方法很灵活.具体写法的话自己研究去吧.

主要是String的区别。
equals()比较的是对象的值,==比较的是对象的地址。

== 是判断对象是否相等
.equals() 是判断字符串是否相等。

=