Java-万类之祖Object
对于包含容器类型的程序设计语言来说,基本上都会涉及到 hashCode。在 Java 中也一样,hashCode 方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括 HashSet、HashMap 以及 HashTable。
equals() 的作用是用来判断两个对象是否相等。
hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。
为什么要重载equal方法?
答案:因为Object的equal方法默认是两个对象的引用的比较,意思就是指向同一内存,地址则相等,否则不相等;如果你现在需要利用对象里面的值来判断是否相等,则重载equal方法。
euqals(){}
业务逻辑:如果euqals是一样的,那么两个对象的hashCode也是一抹一样的,反过来hashCode一样,就不一定有euqals成立。
String 重写了 Object 的 equals 方法,把引用比较改成了值比较。
总结 :== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。