编辑: 这个问题与位运算符无关,不能用为什么在 java hashCode() 中经常使用 XOR 而很少使用另一个位运算符来回答?
我已经看到了对象哈希计算的不同方法:
class A {
public B b;
public C c;
@Override
public boolean equals();
@Override
public int hashCode() {
return c.hashCode() ^ b.hashCode(); //XOR
return c.hashCode() + prime * b.hashCode(); // SUM
return Objects.hash(b,c); // LIB
}
}
LIB方法似乎使用SUM,但为什么它比XOR更好?
尽管这个例子是用 Java 编写的,但这个问题更多的是关于数学和概率。