在java自动生成hashCode代码问题? 请大神赐教
16lz
2021-01-22
我定义了一个teacher类
result=prime*result+age;//result的值肯定会被下面的覆盖掉
result=prime*result+((name==null)?0:name.hashCode());
为什么这么写。
并不会被下面所覆盖掉啊?
result=prime*result+((name==null)?0:name.hashCode());
注意到这句话中,result也参与了计算,而且放大了31倍。
结合之前的计算,两句话合并相当于是:
result=prime*(prime*result+age)+((name==null)?0:name.hashCode());
代入数字的话也即:
return31*(31+age)+((name==null)?0:name.hashCode());
privateStringname;
privateintage;
//下面是自动生成的hashCode
@Override
publicinthashCode(){
finalintprime=31;
intresult=1;
result=prime*result+age;
result=prime*result+((name==null)?0:name.hashCode());
returnresult;
}
result=prime*result+age;//result的值肯定会被下面的覆盖掉
result=prime*result+((name==null)?0:name.hashCode());
为什么这么写。
5 个解决方案
#1
并不会被下面所覆盖掉啊?
result=prime*result+((name==null)?0:name.hashCode());
注意到这句话中,result也参与了计算,而且放大了31倍。
结合之前的计算,两句话合并相当于是:
result=prime*(prime*result+age)+((name==null)?0:name.hashCode());
代入数字的话也即:
return31*(31+age)+((name==null)?0:name.hashCode());
更多相关文章
- java常量的定义
- 自定义标签 Unable to find setter method for attribute
- 在WorldWind Java / JOGL中使用自定义着色器。
- 为可执行文件夹提供自定义图像
- jsp中如何使用javabeans,如何使用一个已经定义好的类
- 如何使用swig定义和传递ByteBuffer?
- 9.JAVA-抽象类定义
- javascript(六)js事件绑定浏览器兼容解决方案 attachEvent addEve
- 这是我在Java套接字编程中做的一种大家都在谈论的自定义协议吗?