Объясните, пожалуйста, маленький отрывок кода про Хэш-код.
....
public int hashCode()
{
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(x);
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(y);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
....
Объясните, пожалуйста, что означает следующее:
- long
- Double.doubleToLongBits(x);
- (int) (temp ^ (temp >>> 32));
ЗАРАНЕЕ СПАСИБО.