java—当一个对象的jvm地址为0时意味着什么?

2jcobegt  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(281)

我有一个对象,突变,我有一个“new”ed。但是当它用tostring()打印出来时,这个对象说mutation@0. 我觉得不太好。那是什么意思?

2izufjch

2izufjch1#

这是无符号十六进制表示
根据对象类中tostring()方法的文档
class对象的tostring方法返回一个字符串,该字符串由对象作为示例的类的名称、at符号字符“@”和对象哈希码的无符号十六进制表示形式组成。换句话说,此方法返回的字符串等于:
那个 zero 在某种意义上,hashcode还没有计算出来。
源代码:

public String toString() {
237        return getClass().getName() + "@" + Integer.toHexString(hashCode());
238    }
vpfxa7rd

vpfxa7rd2#

如果你看一下 Mutation ,很有可能你会发现:

@Override public int hashCode() { 
   //TODO: implement this properly!
   return 0; 
}

的默认实现 toString() 只是报告了一个事实 hashCode 返回0。

相关问题