2011-01-17 7 views

Respuesta

30

El código hash de objeto es el único identificador estándar que podría permitirle distinguir diferentes objetos arbitrarios en Java. No es necesariamente único, pero los objetos iguales normalmente tienen el mismo código hash.

El método predeterminado toString() muestra la clase de objeto y su código hash para poder distinguir entre diferentes instancias de objeto. Dado que también se utiliza por defecto en los mensajes de error, esto tiene bastante sentido.

Consulte la descripción del hashCode() method para obtener más información.

+0

Gracias por su respuesta. Perdón por preguntarte esto, ¿hay alguna explicación que explique sobre esto? – Madhu

+0

@Madhu: ver mi edición – thkala

+0

Leer los comentarios de javadoc en java.lang.Object explica al menos partes de él. – Erik

5

Desde el javadocs:

Tanto como sea razonablemente práctico, el método hashCode definido por la clase de objeto no devolver enteros distintos para objetos distintos. (Esto es típicamente implementado mediante la conversión de la dirección interna del objeto en un entero, pero esta técnica implementación no es requiere el Java ™ programación idioma.)

El código hash aparece en la representación de cadena del objeto para que pueda distinguir este objeto de otros objetos de la misma clase. Esto puede ser útil para la depuración.

+0

en realidad System.identityHashCode está usando actualmente un número aleatorio asignado (ya que la dirección está lejos de ser "estable") – bestsss

9

Agregando algo útil.

Algunos novatos pueden ser confundidos en cuanto a por qué el valor devuelto a través de hascode toString() es diferente a lo que se devuelve a través de hashCode(). Esto se debe a que el método toString() devuelve una representación hexadecimal del mismo código hash.

Integer.toHexString(object.getHashcode); devolverá el mismo valor devuelto por object.toString().

Cuestiones relacionadas