如果我有3个对象 a , b 和 c ,我想检查它们中没有一个是彼此相等的,我需要检查一下:
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。
这表明平等是可传递的,但不平等呢?
答案 0 :(得分:6)
这不是传递性的。考虑x=1
,y=2
和z=1
。
答案 1 :(得分:3)
不等式永远不会传递(如果你有两个不相等的元素,a和b)。因为那时你有!a.equals(b)和,因为对称性!b.equals(a),但是因为同一性你有a.equals(a)。所以不平等不可传递。
答案 2 :(得分:3)
给出a = 5; b = 6; c = 5
:
a!= b - >真
b!= c - >真
a!= c - >假
所以不,不平等不是传递性的。
答案 3 :(得分:1)
不,当然不是。
2 != 3
3 != 2
但
2 == 2
答案 4 :(得分:1)
嗯,不。对于传递性,您需要任何 x,y,z的条件为true;但如果我选择z == x,我非常希望
x != y
和 y!= z
然后不暗示
x != z
因为z 是 x!