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