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
            +"]";
}
原文地址:https://www.cnblogs.com/cckong/p/14308423.html