int x = 10; int y = (x.hashcode() & 0xfffffff);
上面的代码怎么总是使y
positive?谢谢!
x.hashcode() & 0xfffffff
将关闭标志位。Math.abs
此处未使用,因为如果它返回负数x.hashCode
等于Integer.MIN_VALUE
这将使hashtable's
数组抛出一个ArrayOutOfBoundException
这不是你想要的。
来自@JonSkeet 评论:它不仅关闭符号位,还清除接下来的三位.
但对于哈希码,我们一直在处理冲突,所以它被认为是好的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)