黑马程序员技术交流社区
标题:
java中object
[打印本页]
作者:
18255007004
时间:
2015-1-15 14:51
标题:
java中object
1、Object 是Java的超类 所有类默认继承于Object
1) Java 类默认继承于Object 单继承
继承了Object的属性和方法
如: toString(),hashCode(),equals()
2) toString() 方法, 经常有系统默认调用, 活动当前对象的
文本描述, Object默认返回: 全限定名(包名.类名)@hashCode
建议覆盖为: 当前对象的文本描述
3) equals 是用来比较两个对象是否相等的方法。
区别:引用相等 与 对象相等
引用值相等: 使用 “==”
对象的内容相等: .equals() 方法
equals在Object类中声明,默认的比较规则是:比较引用
建议覆盖,实现对象的比较(比较对象的状态,就是比较对象
的数据)。
* 覆盖规则:
a 自反性:对于任何非空引用值 x,x.equals(x) null
都应返回 true。
b 对称性:对于任何非空引用值 x 和 y,当且仅当
y.equals(x) 返回 true 时,x.equals(y)
才应返回 true。
c 传递性:对于任何非空引用值 x、y 和 z,如果
x.equals(y) 返回 true,并且 y.equals(z) 返回
true,那么 x.equals(z) 应返回 true。
d 一致性:对于任何非空引用值 x 和 y,多次调用
x.equals(y) 始终返回 true 或始终返回 false,
前提是对象上 equals 比较中所用的信息没有被修改。
e 对于任何非空引用值 x,x.equals(null) 都应返回
false。www.yc-edu.org介绍
4) hashCode()
A hashCode()方法要与equals方法一同覆盖
a 当两个对象equals比较为true时候,这两个对象应该
具有相同的hashCode()值
b 当两个对象equals比较为false时候,这两个对象应该
具有不相同的hashCode()值
c hashCode() 值要稳定(一致性),一个对象创建以
后就不应该再变化
B 默认的hashCode() 值是当前堆对象地址转换的一个整数
这个整数不是内存地址。
C 一般使用对象的OID值作为hashCode的值。
OID 对象的唯一编号,在工程项目中一般采用数据库来
生成OID,也就是数据库中的“主键”
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2