不等式在Java中是可传递的吗?

不等式在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.

如果我有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。


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

它不是可传递的。考虑<代码> 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