-3

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

类似地,.equals()对象类的方法用于对象的引用比较以及字符串和包装类中的内容比较。

但是我从 SCJP/OCJP 笔记中获得的以下几点,我无法理解。我在网上查看,只发现它们之间的区别==.equals但没有发现下面提到的关系。

  • 如果r1==r2是真的,那么r1.equals(r2)永远是真的。
  • 如果r1==r2为假,则r1.equals(r2)可能返回真(或)假。
  • 如果r1.equals(r2)为真,则r1==r2可能返回真(或)假。
  • 如果r1.equals(r2)为假,则r1==r2始终为假。
4

1 回答 1

1

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

因此,我们期望等价是可传递的:如果 A 等于 B,B 等于 C,则 A 等于 C。我们期望对称:如果 A 等于 B,则 B 等于 A。我们期望等价是自反的:A 等于 A。

于 2015-04-04T09:45:16.667 回答