Я пытаюсь код вокруг равенства объектов в Java. Как я где-то прочитал
hashCode()
- это число, которое генерируется применением хэш-функции. Хэш-функция может быть разной для каждого объекта, но также может быть одинаковой. На уровне объекта он возвращает адрес памяти объекта.
Теперь у меня есть пример программы, которую я запускаю 10 раз подряд. Каждый раз, когда я запускаю программу, я получаю то же значение, что и хэш-код.
Если функция hashCode()
возвращает ячейку памяти для объекта, почему java (JVM) сохраняет объект с тем же адресом памяти в последовательных прогонах?
Не могли бы вы дать мне некоторое представление и ваше мнение по этому вопросу?
Программа, которую я запускаю для проверки этого поведения, приведена ниже:
public class EqualityIndex {
private int index;
public EqualityIndex(int initialIndex) {
this.index = initialIndex;
}
public static void main(String[] args) {
EqualityIndex ei = new EqualityIndex(2);
System.out.println(ei.hashCode());
}
}
Каждый раз, когда я запускаю эту программу, возвращается значение хеш-кода 4072869
.