Хеш-код это целое число, генерируемое на основе конкретного объекта. Хеш-код можно рассматривать как некоторый шифр: если x и y — разные объекты, то с высокой степенью вероятности должны различаться результаты вызовов x.hashCode() и y.hashCode(). В классе String для вычисления хеш-кода используется следующий алгоритм:
1 2 3 |
int hash = 0; for(int i = 0; i < length(); i++) hash = 31 * hash + charAt(i); |
Метод hashCode() определен в классе Object. Поэтому каждый обьект имеет хеш-код, определяемый по умолчанию. В классе Object хеш-код вычисляется на основе адреса памяти, занимаемой объектом.