hashcode()和equals()进行对象比较(是否相等)。
联系:
hashCode()方法和equal()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致。
Object的两个方法。
区别:
重写的equal()里一般比较的比较全面比较复杂,这样效率就比较低,而利用hashCode()进行对比,则只要生成一个hash值进行比较就可以了,效率很高。
hashCode()并不是完全可靠,有时候不同的对象他们生成的hashcode也会一样(生成hash值得公式可能存在的问题),所以hashCode()只能说是大部分时候可靠,并不是绝对可靠。
结论:
每当需要对比的时候,
首先用hashCode()去对比,如果hashCode()不一样,则表示这两个对象肯定不相等(也就是不必再用equal()去再对比了),
如果hashCode()相同,此时再对比他们的equal(),如果equal()也相同,则表示这两个对象是真的相同了,
这样既能大大提高了效率也保证了对比的绝对正确性!
==比较基本数据类型是否相等
compareTo()比较对象逻辑上的先后顺序
实现Comparable接口的类可以使用compareTo()方法,比较对象逻辑上的先后关系。