我想澄清一下我是否理解正确:
> == – >是参考比较,即两个对象都指向相同的存储位置
> .equals() – >评估对象中值的比较
我的理解是正确的吗?
解决方法:
一般来说,你的问题的答案是“是”,但……
> .equals(…)只会比较它的写入比较,不多也不少.
>如果类没有覆盖equals方法,那么它默认为覆盖此方法的最近父类的equals(Object o)方法.
>如果没有父类提供覆盖,那么它默认为最终父类Object的方法,因此您将使用Object#equals(Object o)方法.根据Object API,这与==相同;也就是说,当且仅当两个变量引用同一个对象时,如果它们的引用是同一个,它才返回true.因此,您将测试对象相等性而不是功能相等性.
>如果覆盖等于以至于“违反合同”,请务必记住覆盖hashCode.根据API,如果两个对象的equals方法显示它们是等效的,则两个对象的hashCode()方法返回的结果必须相同.反过来不一定是真的.