黑马程序员技术交流社区

标题: 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