equals()
和 hashcode()
是 java.lang.Object
中提供的用以对象比较的两个重要方法,下面是其定义及默认实现:
public boolean equals(Object obj) { return (this == obj); }
:用以判断变量参数与当前实例是否相等,JDK默认实现是基于对象内存地址是否相同,如果两个对象内存地址相同,则表示两个对象相同。public native int hashCode();
: 默认情况下,该方法返回一个随机整数,对于每个对象来说该数字唯一,但该数字并非恒定,可能随着程序的执行发生变化。
规则:
- 如果两个对象相同(即
equals返回true
),hashcode
一定相等;但是hashcode
相等时,两个对象却不一定equals
。 - 由于为了提高程序的执行效率才实现了
hashcode
方法,先进行hashcode
比较,如果不同,就没有必要进行equals
比较了,这样就大大的减少了equals
的使用次数,从而效率得到提高。
实例:
结果:
true
true
false
false
参考:https://blog.csdn.net/kangkanglou/article/details/78954894