equals()和==的区别?

问题描述:

equals()和==的区别?
在判断值上和判断对象上
1个回答 分类:综合 2014-11-05

问题解答:

我来补答
本人不才,现在我来对前面几个人的回答都做补充,因为发现他们有不严谨的地方:
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方法.不单单是字符串!
这两个概念很简单,但总是能混淆广大程序爱好者,建议大家好好打好基本功.把概念要弄清楚.
 
 
展开全文阅读
剩余:2000
下一页:练习2.3