我知道==
运算符适用于基本类型的内容比较和对象的引用比较。
类似地,对象类的.equals()
方法用于字符串和包装类中对象和内容比较的参考比较。
但是我从SCJP / OCJP注意到的以下几点,我无法理解。我在网上查看了==
和.equals
之间的差异,但没有找到下面提到的关系。
r1==r2
为真,则r1.equals(r2)
始终为真。r1==r2
为false,则r1.equals(r2)
可能返回true(或)false。r1.equals(r2)
为真,那么r1==r2
可能会返回true(或)false。r1.equals(r2)
为false,则r1==r2
始终为false。答案 0 :(得分:1)
这些要求确保equals
方法具有人们对等价概念所期望的语义,以及逻辑/数学属性。
所以,我们期望等价是传递:如果A等于B且B等于C,则A等于C.我们期望对称:如果A等于B则B等于A.我们希望平等是自反:A等于A.