¿Por qué afecta la llamada toString () del objeto de la salida de la cabecera del objeto? Estoy utilizando el paquete de jol

dengshuo:

código de L's es muy simple

public class L {
}

public class Synchronized1 {
    public static void main(String[] args) {
        L l=new L();
//       System.out.println(l.toString());
       System.out.println(ClassLayout.parseInstance(l).toPrintable());
    }
}

Eliminando el comentario, se ejecuta el código de nuevo dará lugar a resultados diferentes, o dos resultados completamente diferentes. Quiero saber cuál es la causa de este resultado? No sólo llamar a toString () afecta el resultado, pero llamar a otros métodos en el objeto que también afecta el resultado como hashCode ()

Encadenar() Después de los comentarios

Mike Nakis:

Su clase vacía class Lutiliza el valor por defecto toString()heredado de class Object.

Las defecto toString()invoca hashCode().

Y como ya se ha visto, hashCode()también parece afectar a la cabecera del objeto.

So, in essence, the problem can be restated as "Why does calling hashCode() alter the header of my object?"

As others have already pointed in the comments, this is happening because in the particular JVM implementation that you are using, the hashCode of an object is computed the first time hashCode() is invoked, and then it is cached in the header, so that subsequent calls to hashCode() can just return the cached value, without having to re-compute it again.

Besides performance, there may be an even more important reason for doing this.

Dependiendo de cómo la JVM que está utilizando Calcula hashcodes, puede haber aleatoriedad involucrados en los cálculos, o puede haber una semilla de número cada vez incrementando, por lo que puede ser que los intentos posteriores para reproducir el código hash de un objeto que no tienen medios de generar el mismo valor exacto como el primer cálculo. Esto significa que el primer cálculo debe determinar cuál es el valor código hash será siempre después.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=312752&siteId=1
Recomendado
Clasificación