equals()方法、 和 hashcode()方法

来源:互联网 发布:竞拍系统源码 编辑:程序博客网 时间:2024/05/12 05:25

1.equals()方法:

方法格式:public boolean equals(Object obj)
功能:比较引用类型数据的等价性
等价标准:引用类型比较引用地址,基本类型比较值。
equals()方法与==操作符的区别:
equals()方法只能比较引用类型数据,而“==”可以比较引用类型和基本数据类型数据;
equals()方法存在特例:对File、String、Date及封装类等类型来说,是比较类型及对象的内容而不考虑引用的是否为同一实例,因为在这些类中重写了Object类的equals()方法。

可以根据需要,在用户定义类中重写其equals()方法

2.hashcode()方法:

方法格式:public int hashCode() {…}
返回该对象的哈希码值 。
如果你重写了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。
如果根据equals(),两个对象均相同,则调用这两个对象的hasCode()必须返回相同的int值。 
如果重写了equals()方法,一般也要重写hashCode方法。
System.identityHashCode("abcd");不管有没有重写hashCode都会打印地址值 


0 0