Object类
位于:java.lang.Object
因此不需要导包
"类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。"
Object类是根类(最顶层的类)、基类、超类,所有类的父类。因此object类所具有的非私有属性的变量和方法都可以被所有类使用
Object构造方法:
public Object()
这也就解释了为什么所有的构造方法的首行默认的是super(),因为object的构造方法只有一个并且不带参,而object是所有类的父类
Object类中常用的方法
1.boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”
Object类中的equals()默认比较的是两个对象的地址值,意义不大,所以一般会重写equals(),使其实现去比较两个对象的属性值:对象的属性值如果一样,则返回true,否则返回false
*重写equals()要注意一个问题,它里面传入的形参是Object类的对象,并且隐含这多态:Object obj = new Xxx(实参); 多态无法使用子类特有的成员(变量或者方法),所以重写该方法的时候需要去向下转型,转成子类,进而去比较子类的属性值是否相等
2.String toString()
返回该对象的字符串表示
作用:将对象转成字符串对象
*直接打印对象的名字,其实就是调用对象的toString方法
直接打印对象的地址值没有意义,需要重写Object类的toString方法,使其能够打印对象的属性
判断一个类是否重写了toString方法,直接打印这个类中对应的对象的名字即可,如果没有重写toString方法,打印的就是对象的地址值,如果重写了toString方法,那么就按照重写之后的方法打印
3.Class<?> getClass()
返回此 Object 的运行时类
Class:类的类
作用是获取对象的字节码对象,并且因为一个类中只可能有一个Class对象,所以可以用来检测两个对象是否属于同一个类
4. int hashCode()
返回该对象的哈希码值
如果没有重写hashCode方法,Object中的hashCode方法是在获取对象的地址值,并且是用十进制表示的