1、==
基础数据类型如int、short、long直接比较的是值是否相等。
引用数据类型如数组、类比较的是内存地址是否相等。
2、equals
默认的equals方法,比较的是hascode是否相等。
经过覆写的equals方法,按照覆写的逻辑来比较是否相等。
3、hascode方法
默认的hascode方法,是将对象的实际内存地址经过哈希算法后返回一个数值。因此,两个不同的对象也有可能hascode相等。
4、hascode的用处
hascode计算所得的值,实际上讲是散列后的值,因此可以用于集合操作中。
当向Map、Set等集合插入元素时,为了避免重复插入,需要判断此元素是否已经在集合中存在。
a) 如果hascode不相等,那么,一定是不同的元素,则可以插入。
b) 如果hascode相等,由于存在不同内存地址哈希算法后可能得出相同has值的情况,集合会再调用equals方法,对两个对象从逻辑上是否相等做判断。
不知道我解释清楚了嘛?