目录
2.2 方法声明--boolean equals(Object obj)
1. Object类概述
(1)java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类,所有对象(包括数组)都实现了这个类的方法。
(2)如果定义一个Java类时没有使用extends关键字声明其父类,则其父类java.lang.Object 类。
(3)Object类定义了“对象”的基本行为, 被子类默认继承。
2. Object类常用方法
2.1 方法声明--Object()
功能介绍:
使用无参方式构造对象 。
2.2 方法声明--boolean equals(Object obj)
功能介绍:
用于判断调用对象是否与参数对象相等。该方法默认比较两个对象的地址是否相等,与 == 运算符的结果一致,若希望比较两个对象的内容,则需要重写该方法。
注意:若该方法被重写后,则应该重写hashCode方法来保证结果的一致性。
2.3 方法声明--int hashCode()
功能介绍:
用于获取调用对象的哈希码值(内存地址的编号)。若两个对象调用equals方法相等,则各自调用该方法的结果必须相同,若两个调用对象equals方法不相等,则各自调用该方法的结果应该不相同。
注意:为了使得该方法与equals方法保持一致,需要重写该方法。
2.4 方法声明--String toString()
功能介绍:
用于获取调用对象的字符串形式,该方法默认返回的字符串为:包名.类名@哈希码值的十六进制,为了返回更有意义的数据,需要重写该方法,使用print或println打印引用或字符串拼接引用都会自动调用该方法 。
注意: 建议所有子类覆盖此方法。
2.4 方法声明--Class getClass()
功能介绍:
用于返回调用对象执行时的Class实例,反射机制使用 。
3. 注意事项
3.1 equals协议
equals方法在非空对象引用上实现等价关系:
自反性 :对于任何非空的参考值x
, x.equals(x)
应该返回true
。
它是对称的 :对于任何非空引用值x
和y
, x.equals(y)
应该返回true
当且仅当y.equals(x)
回报true
。
传递性 :对于任何非空引用值x
, y
和z
,如果x.equals(y)
回报true
个y.equals(z)
回报true
,然后x.equals(z)
应该返回true
。
它是一致的 :对于任何非空引用值x
和y
,多次调用x.equals(y)
始终返回true
或始终返回false
,没有设置中使用的信息equals
比较上的对象被修改。
对于任何非空的参考值x
, x.equals(null)
应该返回false。
3.2 hashCode协议
只要在执行Java应用程序时多次在同一个对象上调用该方法, hashCode
方法必须始终返回相同的整数,前提是修改了对象中equals
比较中的信息。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。
如果根据equals(Object)
方法两个对象相等,则在两个对象中的每个对象上调用hashCode
方法必须产生相同的整数结果。
不要求如果两个对象根据equals(java.lang.Object)方法不相等,那么在两个对象中的每个对象上调用hashCode
方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。