前提: 偶然的机会看到了大神的一篇博客,介绍的是hashCode()方法里为什么要用31这个数字作为生成hashCode的乘数.hashCode我在比较自定义类时曾经用到过 - 由于java默认比较的是类的地址值,每个对象一定是不同的,所以重写了hashCode()和equals()方法 ,这样就会先根据类里的属性生成hashCode,如果生成的hashCode值相同,则在使用equals()比较属性的值.两者都相同则认为这两个对象相等.当是就对hashCode的生成很好奇,自己看了下源码也是懵