2011-01-17 12 views

Odpowiedz

30

Kod skrótu do obiektu jest jedynym identyfikatorem standard, który może pozwolić na odróżnienie różnych obiektów w Javie. Niekoniecznie jest to unikatowe, ale jednakowe obiekty mają zwykle ten sam kod skrótu.

Domyślna metoda toString() pokazuje klasę obiektu i jego kod skrótu, aby można było oddzielić różne instancje obiektu. Ponieważ jest on również używany domyślnie w komunikatach o błędach, ma to całkiem sensowny sens.

Aby uzyskać więcej informacji, zobacz opis hashCode() method.

+0

Dziękuję za odpowiedź. Przepraszam, że cię o to pytam, czy są jakieś szczegóły na ten temat? – Madhu

+0

@Madhu: zobacz moją edycję – thkala

+0

Czytanie komentarzy javadoc na java.lang.Object wyjaśnia przynajmniej jego części. – Erik

5

Z javadocs:

O ile jest to uzasadnione i praktyczne, sposób hashCode określone klasy Obiektu nie powraca różne liczby całkowite dla różnych przedmiotów. (Jest to zazwyczaj realizowane poprzez przekształcenie wewnętrzny adres obiektu do liczby całkowitej, ale technika ta realizacja nie jest wymagane przez JavaTM programowania język.)

hashCode pojawia się w ciąg znaków obiektu, aby można było odróżnić ten obiekt od innych obiektów tej samej klasy. Może to być przydatne do debugowania.

+0

właściwie System.identityHashCode obecnie używa przypisanej liczby losowej (ponieważ adres jest daleki od "stabilnego") – bestsss

9

Dodawanie czegoś użytecznego.

Niektórzy początkujący mogą mylić, dlaczego wartość hascode zawraca toString() jest inna niż to, co jest zwracane przez hashCode(). Jest tak, ponieważ metoda toString() zwraca reprezentację heksadecymalną tego samego kodu Hashcode.

Integer.toHexString(object.getHashcode); zwróci tę samą wartość zwróconą przez object.toString().

Powiązane problemy