• Java所有类的超类Object知识点总结


    1.如果没有明确的指示出超类,object就是超类。

    2.可以使用Obeject作为泛型容器,引用任何类型的对象。

    3.只有8大基本类型(byte short int long float double   char   boolean)不是对象

    4.所有的数组类型,都扩展了Object类

    5.equals方法

    用于检测一个对象是否等于另外一个对象。两个对象具有相同的状态,才算相等。

     子类定义equals方法,首先调用超类的equals,如果监测失败,就不可能相等。如果超类中字段相等,就比较子类中的实例字段。

    可以用instanceOf还有getClass方法进行检测:

    子类有自己的相对性概念,强制使用getClass检测

    超类决定相对性概念,可以使用instanceOf检测

    **********************

    equals的特性:

    自反性:x.equals(x)应该返回true

    对称性

    传递性

    一致性

    x.equals(null)应该返回false

    6.完美的equals方法

    (1)显示参数命名为otherObject

    (2)检测this与otherObject是否相等

    if(this==otherObject) return true;

    (3)检测otherObject是否为null 为null返回false

    (4)比较二者的类

    如果equlas在子类中改变就是用getClas

    if(!getClass()!=otherObject.getClass()) return false;

    如果所有子类都有相同的相等性语义,则可以使用instanceOf检测

    if(!(otherObject instanceOf ClassName)) return false;

    (5)将otherObject强制转换为相应类类型的变量

    ClassName other =(ClassName) otherObject;

    (6)根据相等性概念来比较字段,使用==比较基本类型字段,Object.equals比较对象字段

    return salary==other.salary
        &&Object.equals(name,other.name);

    7.hashCode方法

    散列码是由对象导出的一个整型值

    字符串的散列码是由内容导出的

     

     

     

     

    Objerct类的默认hashCode类方法会从对象的存储地址得出散列码

    8.如果重新定义了equals方法就必须重新定义hashCode方法。

    如果x.equals(y)返回为true

    那么必须x.hashCode() y.hashCode()相等

    9.toString方法

    返回表示对象值的一个字符串

    public String toString()
    {
        return getClass().getName()
                +"[name="+name
                +"salary="+salary
                +"]";
    }
  • 相关阅读:
    20172303 2017-2018-2 《程序设计与数据结构》实验一报告
    20172303 2017-2018-2 《程序设计与数据结构》第3周学习总结
    20172303 2017-2018-2 《程序设计与数据结构》第2周学习总结
    20172303 2017-2018-2 《程序设计与数据结构》第1周学习总结
    预备作业03
    预备作业02
    预备作业01
    日语学习笔记
    [Redux] redux之combineReducers
    [Vue] vue跳转外部链接
  • 原文地址:https://www.cnblogs.com/cckong/p/14308423.html
Copyright © 2020-2023  润新知