equals()方法和==运算符之间的关系

时间:2015-04-04 09:30:11

标签: java scjp ocpjp

我知道==运算符适用于基本类型的内容比较和对象的引用比较。

类似地,对象类的.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。

1 个答案:

答案 0 :(得分:1)

这些要求确保equals方法具有人们对等价概念所期望的语义,以及逻辑/数学属性。

所以,我们期望等价是传递:如果A等于B且B等于C,则A等于C.我们期望对称:如果A等于B则B等于A.我们希望平等是自反:A等于A.