Java 当对象的jvm地址为0时,这意味着什么?

Java 当对象的jvm地址为0时,这意味着什么?,java,memory,hadoop,jvm,Java,Memory,Hadoop,Jvm,我有一个对象,Mutation,我有“new”ed。但是当它用toString()打印出来时,这个对象说Mutation@0. 我觉得这不太好。这是什么意思?这是无符号十六进制表示 class对象的toString方法返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串: 在Hashcode尚未计算的意义上,该0 这是无符号十六进制表示 class对象的toString方法返回一个字符串,

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

这是无符号十六进制表示

class对象的toString方法返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

在Hashcode尚未计算的意义上,该
0


这是无符号十六进制表示

class对象的toString方法返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

在Hashcode尚未计算的意义上,该
0


如果您查看
变异的源代码
,很有可能会发现:

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

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

如果您查看
Mutation
的源代码,您很有可能会在其中找到:

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

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

我猜变异是OP自己的对象。如果我错了,你能附加那个API链接吗ᴜʀᴇsʜᴀᴛᴛᴀ 是的,我想这是他自己的课。我回答的重点是指向问题的根源。+1.啊..这个源代码术语让我发疯,我想马上看到API:)它实际上不是我的类。这是Accumulo API的一部分。所以我没有办法实现一个合适的哈希代码。我怎么才能比较两个变异对象呢?我猜变异是OP自己的对象。如果我错了,你能附上API链接吗ᴜʀᴇsʜᴀᴛᴛᴀ 是的,我想这是他自己的课。我回答的重点是指向问题的根源。+1.啊..这个源代码术语让我发疯,我想马上看到API:)它实际上不是我的类。这是Accumulo API的一部分。所以我没有办法实现一个合适的哈希代码。然后如何比较两个变异对象?
0
不是地址。hashCode()与地址没有什么关系,只是看起来很相似,因为它是十六进制的。偶数Object.hashCode()是存储在标头中的一个值,即使对象在不同代之间移动(因此具有不同的内存地址),
0
也不是地址。hashCode()与地址没有什么关系,只是看起来很相似,因为它是十六进制的。偶数Object.hashCode()是存储在标头中的一个值,即使对象在不同代之间移动(因此具有不同的内存地址),该值也不会更改