Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hashCode()的困境-Java_Java_Object_Hashcode - Fatal编程技术网

hashCode()的困境-Java

hashCode()的困境-Java,java,object,hashcode,Java,Object,Hashcode,我有以下代码 Object testA = new Object(); Object testB = testA; System.out.println("A:"+testA.hashCode()) System.out.println("B:"+testB.hashCode()) 根据上面的说明,我得到了两个对象的相同哈希代码。我知道testB被分配给testA,因此它可以有相同的hashcode,但是应该有一种方法来唯一地识别这两个对象中的差异,对吗 请让我知道,如果有什么明显的,我错过

我有以下代码

Object testA =  new Object();
Object testB = testA;
System.out.println("A:"+testA.hashCode())
System.out.println("B:"+testB.hashCode())
根据上面的说明,我得到了两个对象的相同哈希代码。我知道testB被分配给testA,因此它可以有相同的hashcode,但是应该有一种方法来唯一地识别这两个对象中的差异,对吗

请让我知道,如果有什么明显的,我错过了

但是,应该有一种方法来唯一地识别这两个对象的差异,对吗

没有区别,因为没有两个对象。只有一个对象由两个变量引用


理论上,两个不同的对象可能具有相同的
hashCode
。您可以使用
equals
或使用
=
来区分它们。如果不重写
equals
,则默认情况下它的行为与
=
相同。

hashCode函数的含义是
hashCode
必须为两个相等的对象返回相同的值。在这种情况下,它们不仅“相等”(根据
equals
方法),甚至是同一个对象(这意味着它们相等)


此外,与规范要求无关,对
hashCode
的两个调用不可能返回不同的值,因为两个变量实际上引用的是同一个对象。无法区分
testA
testB
(当然除了变量名)。

您创建了一个新的对象testA,但随后将testB分配给testA,这将为两个对象分配相同的内存空间。这就是它返回相同HashCode的原因。

在检查==运算符时,它会说它是相等的。@Faz:HashCode的相关部分是
equals
方法,而不是
=
。但在这种情况下,两者都会说它们是相等的。你能添加一个对Java文档的引用吗?或者添加一个表示如果equals方法返回true,hashcode应该是相同的东西吗?@Abishemanoharan:添加了它。