2

如果我有 3 个对象abc,并且我想检查它们是否彼此相等,我需要检查:

if (!a.equals(b) && !b.equals(c) && !a.equals(c)) { // to simplify, assume non-null
    // do something
}

根据 Java 文档,对于正确实现的 equals 方法:

它是可传递的:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true 并且 y.equals(z) 返回 true,则 x.equals(z) 应该返回 true。

这表明平等是可传递的,但不平等呢?

4

5 回答 5

6

它不是传递的。考虑和。x=1_y=2z=1

于 2011-09-07T11:44:03.137 回答
3

不等式永远不会传递(如果您有 2 个不相等的元素,a 和 b)。因为那时你有 !a.equals(b) 并且因为对称性 !b.equals(a),但是因为身份你有 a.equals(a)。所以不等式不能传递。

于 2011-09-07T11:44:37.363 回答
3

给定a = 5; b = 6; c = 5

a != b -> 真

b != c -> 真

a != c -> 假

所以不,不平等不是传递的。

于 2011-09-07T11:45:17.927 回答
1

不,当然不是。

2 != 3
3 != 2

2 == 2
于 2011-09-07T11:44:18.740 回答
1

嗯,不。对于传递性,您需要任何x、y、z 的条件为真;但如果我选择 z == x,我非常希望

x != y

和 y != z

并不意味着

x != z

因为zx!

于 2011-09-07T11:44:32.373 回答