Java 空对象的默认哈希代码

Java 空对象的默认哈希代码,java,hashcode,Java,Hashcode,在Java中,Objects.hash(null)返回0 但是 Map-Map=null; Objects.hash(映射) 将返回31它与varargs的解释方式有关。在引擎盖下,varargs参数通过创建一个数组来实现 在Objects.hash(null)的情况下,您显然是在传递null。没有数组。执行Objects.hash(map)时,将转换为长度为1的数组,第一个也是唯一一个元素为null 由于哈希代码的计算方式,null和具有1个null元素的数组会得到不同的哈希代码。null不

在Java中,
Objects.hash(null)
返回0

但是

Map-Map=null;
Objects.hash(映射)

将返回31

它与varargs的解释方式有关。在引擎盖下,varargs参数通过创建一个数组来实现

Objects.hash(null)
的情况下,您显然是在传递null。没有数组。执行
Objects.hash(map)
时,将转换为长度为1的数组,第一个也是唯一一个元素为null


由于哈希代码的计算方式,null和具有1个null元素的数组会得到不同的哈希代码。

null不是具有
.hashCode()
方法的对象。(关于编程注意事项:散列
null
甚至可以实现什么?)
Map<Integer, Integer> map = null;
Objects.hash(map)