![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Как я понимаю, toString() - выведет я4ейку памяти в каторой находится объект. А hashCode() int hash для этого объекта. Парав ли я? Это сообщение отредактировал(а) Tony - 12.12.2006, 13:23 |
|||
|
||||
| Shurr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 5 Всего: 7 |
The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:
getClass().getName() + '@' + Integer.toHexString(hashCode()) http://java.sun.com/j2se/1.4.2/docs/api/ja...html#toString() Так что в случае если метод toString() в объекте не переопределен - то выводит он имя класса объекта + '@' + хэш в шестнадцатеричном представлении. |
|||
|
||||
| Tony |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
И так понятно. sss - хранит ссылку на объект. Эта ссылка генерится:
Тоесть сам hash code явлсяется аддресом я4ейки памяти? Просто хо4у детально разобратся. Это сообщение отредактировал(а) Tony - 12.12.2006, 14:38 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Нет. 1. Объекты которым нужно сравнение по содержимому (а не просто сравнение ссылок), переопределяют метод hashCode(). 2. Никаких особых соглашений и гарантий на то, что возвращает hashCode() у Object нет. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| s8e8r8g8e |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 12.5.2006 Репутация: 1 Всего: 1 |
а toString() разве где-то заспецифицирован, вроде бы он тоже выдаёт что попало как и hashCode()(почти), одно ясно что если не переопределён то выдаёт то же что и в Object.
правда всё же надеюсь что хоть гарантий про hashCode у Object нет, но вот стандартным соглашениям он всё же следует. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Переменная sss хранит ссылку на объект? В виде
Если да, то ссылка на я4ейку памяти где хранится объект? |
|||
|
||||
| Shurr |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 5 Всего: 7 |
Переменная sss хранит ссылку на объект, но не в том виде, в котором ты говоришь. Стандартные средства java не позволяют увидеть значение ссылки в виде адреса ячейки памяти. Т.е. если ты попытаешься вывести содержимое sss:
Т.о.
Это сообщение отредактировал(а) Shurr - 13.12.2006, 10:54 |
||||
|
|||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Спасибо. Стало ясно. |
|||
|
||||
| maxlab |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
... а я переопределяю equals(), где тупо сравниваю поля объектов. Предполагаю что с hashCode() сравнение объектов по содержанию должно выглядеть элегантней. А как это делается - пока не въехал --------------------
Удивительное рядом... но оно запрещено! |
|||
|
||||
| VectorMan |
|
|||
|
Antihero ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 9.4.2006 Репутация: 1 Всего: 4 |
maxlab, hashCode нужен для быстрой проверки на неравенство объектов (так как сравнение целых чисел очень быстрая операция), если у двух объектов hashCode различен, то объекты точно разные, если hashCode совпадает, то объекты могут иметь одинаковое значение, а могут и различаться.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |