Estoy intentando algún código sobre la igualdad de objetos en java. Como he leído en algún lugar¿Por qué hashCode() devuelve el mismo valor para un objeto en todas las ejecuciones consecutivas?
hashCode()
es un número que se genera aplicando la función hash. La función hash puede ser diferente para cada objeto pero también puede ser la misma. En el nivel de objeto, devuelve la dirección de memoria del objeto.
Ahora, tengo el programa de ejemplo, que corro 10 veces, consecutivamente. Cada vez que ejecuto el programa obtengo el mismo valor que el código hash.
Si la función hashCode()
devuelve la ubicación de la memoria para el objeto, ¿cómo es que la java (JVM) almacena el objeto en la misma dirección de memoria en las ejecuciones consecutivas?
¿Puede darme alguna idea y su opinión sobre este tema?
El Programa Me postulo para probar este comportamiento es el siguiente:
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());
}
}
Cada vez que ejecute este programa, el valor de código hash devuelto es 4072869
.
¿Cuáles son sus objetos? Muestra un código – Bozho
¿está seguro de que su valor es una dirección de memoria? ¿Puedes publicarlo? – vodkhang
El '.hashCode()' predeterminado de Java es en realidad más un identificador * de memoria incremental * que * dirección *, por lo que, naturalmente, cuando las condiciones previas son las mismas, también lo es el resultado. – Esko