为什么IDEA和Eclipse自动生成的hashcode()值通常是乘31① 乘一个较大的数可以放大数与数之间的差别,但较大的乘数会导致溢出;② 31只占用5bits,相乘造成数据溢出的几率较小;③ 31可以由i*31 ==(i<<5)-i来表示,现在虚拟机里面都有做相关优化(提高运算效率);④ 31本身是个素数,素数的作用就是如果我用一个素数乘以一个数,那么最终出来的结果只能被素数和被乘数还有1来整除(减少冲突).
转载请注明原文地址:https://ipadbbs.8miu.com/read-54235.html