不等式在Java中是可传递的吗?
如果我有3个对象a、b和c,并且我想检查它们是否彼此不相等,我需要检查:不等式在Java中是可传递的吗?,java,equals,inequality,transitivity,Java,Equals,Inequality,Transitivity,如果我有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.
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。
这说明平等是可传递的,但是不平等呢?它不是可传递的。考虑<代码> x=1 ,<代码> y=2 < /COD>和<代码> z=1 < /代码> .< /P> < P>不,当然不是。< /P>
2 != 3
3 != 2
但是
不,对于传递性,你需要条件为真,对于anyx,y,z;但是如果我选择z==x,我非常希望
x != y
及
y!=z
这并不意味着
x != z
因为z就是x 不等式从不可传递(如果有两个不相等的元素,a和b)。因为你有!a、 等于(b)和,因为对称!b、 等于(a),但由于同一性,你有a.equals(a)。因此,不合格不能传递。给定
a=5;b=6;c=5
:
a!=b->正确
b!=c->true
a!=c->false
因此,不平等不是传递性的。这与语言无关,而是与不平等的含义有关。
x != z