美文网首页
java——Object类

java——Object类

作者: 打死你的小乌龟 | 来源:发表于2018-08-29 23:58 被阅读0次
    Java类继承了Object的所有属性和方法,如: toString(), hashCode(), equals()
    1) toString() 方法

    1、经常由系统默认调用,是活动当前对象的文本描述
    2、Object默认返回值: 全限定名@hashCode
    3、建议覆盖为: 当前对象的文本描述

    2) equals()方法

    1、用来比较两个对象是否相等的方法。
    2、比较对象分为两种:“引用相等”不“对象相等”。
    3、比较引用值是否相等: “==”。
    4、比较对象的内容是否相等:xxx.equals()方法。
    5、equals在Object类中声明,默认的比较规则是:比较引用。
    6、建议覆盖,实现对象的比较(比较对象的状态,就是比较对象的数据)。

    覆盖规则:

    1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
    2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
    3、传递性:对于任何非空引用值 x、y 和 z,如果x.equals(y) 返回 true,并且y.equals(z) 返回true,那么x.equals(z) 应返回 true。
    4、一致性:对于任何非空引用值 x 和 y,多次调用x.equals(y) 始终返回 true 戒始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
    5、对于任何非空引用值 x,x.equals(null) 都应返回 false。

    Equals():主要用于比较对象的内容是否相等(对象的属性),但是Object类中的equals()方法的底层实现用的是“==”,双等号是判断是否是同一个对象,满足不了我们的需求所以需要重写equals()方法

            public boolean equals(Object obj){
            if(!(obj instanceof Person)){
            //return false;
            throw new ClassCastException("类型错误");
            }
            Person p = (Person)obj;
            }
    
    3) hashCode() 方法

    1、hashCode()方法要不equals方法一同覆盖(Sun公司规定)。
    2、当两个对象equals比较为true时,应具有相同的hashCode()值。
    3、当两个对象equals比较为false时,应具有不相同的hashCode()值。
    4、hashCode() 值要稳定(一致性),一个对象创建以后就不应该再变化。
    5、默认的hashCode()值是当前堆对象地址转换的一个整数,这个整数不是内存地址!
    6、一般使用对象的OID值作为hashCode的值
    OID是对象的唯一编号,在项目中一般采用数据库生成OID,也就是数据库中的“主键”。

    相关文章

      网友评论

          本文标题:java——Object类

          本文链接:https://www.haomeiwen.com/subject/rskjiftx.html