首先 你要明白 hashCode equals 分别有啥作用??
1,hashCode是计算哈希值的,你想想 能用到哈希值的不就是 对象的地址值嘛!!当地址值确定了 那么这个对象就确定了!
如果有其他对象用的也是这个地址值 问题如下....
2, 继续,既然地址值一样了。跟你说 ,自然情况下 非人为的,堆内存中是绝对不可能有两个或以上对象用同一个地址值!!
这个时候我们就想了,如果我们人为的把所有对象强行的公用一个地址值。
这时候又出现问题了!!那我们如何知道这些对象具体内容到底是不是一样的呢??
3,这个时候我们就该覆写equals方法来具体判断一哈每两个对象具体内容是否完全一样。
如果内容一样,虚拟机自动识别,会认为两个对象是一样的即是同一个对象;
如果内容不一样,虚拟机自动识别 为认为这是两个不同的对象。
一般 也就在hasSet 以及hashMap 中会用到。。。。。因为底层数据要求对象不重复也就是存储的元素不能重复。。。
祝愉快。。。。。 |