Java:ToString() 每次打印相同的哈希码

标签 java object tostring hashcode ocpjp

class Point {
    private int xPos, yPos;

    public Point(int x, int y) {
        xPos = x;
        yPos = y;
    }
    public static void main(String[] args) {
        System.out.println(new Point(10,20));
    }
}

上述代码的输出返回对象哈希码的相同 ClassName@hex 版本,尽管我引用的文本(S G Ganesh 和 Tushar Sharma 的 OCPJP 指南)指出“每个实例的十六进制值都不同”。难道是我理解不正确吗?

最佳答案

对于 hashCode #JavaDoc

Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer...

这里你谈论的是ClassName@hex,它在程序执行期间将保持不变,但是如果你一次又一次地运行程序,你可能会得到这个表示每次不同或几次相同的表示它取决于哈希码并受内存分配的影响。

关于Java:ToString() 每次打印相同的哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27717328/

相关文章:

arrays - 使用 ngFor 对从 Firebase 获取的对象进行迭代

jQuery 检测 .find (' ' ).text() 是否已定义

java - 如何更好地创建复杂类的实例?

java - 如何在Java Struts项目中实现支付网关?

java - 如何将多个单词存储为 ArrayList 值

java - 在 Java SWT 浏览器中更改 URL(来自其他线程?)

Javascript Object.defineProperty 设置属性更改时触发的方法

java - toString 方法中应该包含什么,不应该包含什么?

c# - 如何用逗号格式化数字?

apache-flex - 如何在运行时打印出对象内存地址?就像java中的this.toString()