java 类默认继承于Object,用一句话形容就是:“啥都是东西”。Java类继承了Object的所有属性和方法,如: toString(), hashCode(), equals()
-
toString() 方法
■ 经常由系统默认调用,是当前对象的文本描述
■ Object默认返回值: 全限定名@hashCode
■ 建议覆盖为: 当前对象的文本描述 -
equals()方法
用来比较两个对象是否相等的方法
比较对象分为两种:“引用相等”和“对象相等”
■ 比较引用值是否相等: “==”
■ 比较对象的内容是否相等:xxx.equals()方法
equals在Object类中声明,默认的比较规则是:比较引用
建议覆盖,实现对象的比较(比较对象的状态,就是比较对象的数据)
覆盖规则:
■ 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true
■ 对称性:对于任何非空引用值 x 和 y, 当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才
应返回 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
- hashCode() 方法
hashCode()方法要同equals方法一同覆盖(Sun公司规定)
当两个对象equals比较为true时,应具有相同的hashCode()值
当两个对象equals比较为false时,应具有不相同的hashCode()值
hashCode() 值要稳定(一致性),一个对象创建以后就不应该再变化
默认的hashCode()值是当前堆对象地址转换的一个整数,这个整数不是内存地址;
一般使用对象的OID值作为hashCode的值
OID是对象的唯一编号,在项目中一般采用数据库生成OID,也就是数据库中的“主键”;