字符串为“123” 时,hashcode 与 hash相同。
字符串为“1234” 时,hashcode 与 hash不相同。
^ 代表异或,>>> 代表右移
举个例子,0000 1111(15)右移2位的结果是0000 0011(3),0001 1010(18)右移3位的结果是0000 0011(3)。不难发现,规律是高位补零,低位抹去。
key.hashCode()由前十六位与后十六位,而h>>>16由16位0与key.hashCode()前十六位组成
hash = (h = key.hashCode()) ^ (h >>> 16)就迎面而解了 。至于为什么65535之内,两者相同,各位可以去屡屡异或运算特点。