2010-12-31 3 views
4

В чем разница между ссылкой объекта и значением хэш-кода того же объекта в java?Разница между ссылкой объекта и хеш-кодом объекта

+1

[разница между хеш-кодом и ссылкой или адрес объекта? ] (http://stackoverflow.com/questions/3700595/difference-between-hash-code-and-reference-or-address-of-an-object) - это то же самое, хотя первоначально его запрашивали Java ME , –

ответ

6

Это совершенно разные концепции.

Cat oldCat = new Cat(); 
Cat newCat = new Cat(); 
Cat oldCatRef = oldCat; 

В приведенном выше примере, oldCat и oldCatRef ссылки на тот же объект. Поскольку они относятся к одному и тому же объекту, их хэш-коды будут равны.

Но oldCat и newCat не относятся к одному и тому же объекту. Это ссылки на два разных объекта. Но они могут иметь одинаковые hashCode на основе их реализации. hashCode - это просто метод в классе Object, который вы можете переопределить.

РЕДАКТИРОВАТЬ (от PeterJ): В соответствии со спецификацией JavaSE6 объекта, если oldCat.equals (newCat), то хэш-код из двух должны быть равны. Это хорошо программирования подчиняться этим договором

Вы, вероятно, хотите, чтобы проверить ответы на этот вопрос, а также:

difference between hash code and reference or address of an object?

+0

В соответствии с спецификацией объекта JavaSE6, если oldCat.equals (newCat), то хэш-код этих двух должен быть равен. Это хорошее программирование, чтобы повиноваться этому контракту. – Shawn

+0

@peterJ Спасибо за предложение! Обновлен ответ. – rkg

7

Ссылка на объект - это просто. Ссылка на объект.

Хэш-код объекта является результатом метода hashCode(), который в зависимости от реализации может быть различным. По умолчанию hashCode():

обычно реализуется путем преобразования внутреннего адреса объекта в целое число, но этот метод реализации не требуется языком программирования JavaTM

+0

В 64-битных JVM-ссылках, как правило, используются 8-байтовые, hashCode() - всего 32 бита. –

3

два разных объекта могут иметь такую ​​же hashCode , A reference - уникальный указатель на объект, где hashCode - удобный вычисляемый атрибут.

Смежные вопросы