重写hashCode()方法为什么要用31这个数? 1.31是个质数(同时也称素数),用任意一个数乘以这个素数,最后的结果只能被这个 素数本身和被乘数还有1来整除。(减少冲突) 2.1可以 由i*31== (i<<5)-i来表示,现在很多虚拟机里面都有做相关优化。(提高算法效率) 3.31只占用5bits,相乘造成数据溢出的概率较小。 转载于https://blog.csdn.net/mingli198611/article/details/10062791