Object类以及Object类中常用方法解读

Object类概述

 类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

简单来说就是,Object类是所有类的父类,包括我们所写的类,我们在使用类的时候就会利用Object类中的方法

 Test类和Test1类都继承于Object顶层父类。

Object的意义

既然Java中所有的类都继承Object,继承的意义就是继承其中的成员方法,Java将许多我们常用的方法都封装在了Object类中,这样我们的其他类都可以直接继承这些方法并且在类中所创建的对象(引用数据类型)可以直接调用这些方法。
比如我们现在创建一个数组“arr”,看看“arr”可以调动哪些方法:

 我们会发现有许多可以调用的方法并不是我们自己创建的成员方法,那意味着这些方法是来自本类所继承的父类,也就是Object。

Object中的构造方法

回想面向对象中说到,子类的构造方法默认访问的是父类中的无参构造,对父类的数据进行初始化,所以Object类中具有默认的无参构造Object() 。


现在我们了解了如何直接调用Object类中已经封装的功能,那么现在介绍具体的我们常用的几个方法,也就是在Java中开发过程中的常用对象

hashCode()方法

方法体为public int hashCode()
支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
我们发现hashCode方法返回值类型为int类型,所以我们创建int变量来体现返回值,具体作用的演示:

 

 hashCode(): 返回一个对象的哈希码值
意思就是把对象的地址值换算成一个整数值,当两个对象不是同一对象,其地址值不同,哈希码值也不一样。

 

 相反,同一对象的哈希码值肯定相同

getClass()方法

方法体为public final Class<?> getClass()
当我们类的class文件加载进内存后,JVM 就会为 .class文件创建一个对象。我们可以通过getClass()方法来获取这个对象。

 此时我们调取的就是Test类的Test.class文件的对象。
那么也说明,同一个类创建不同的对象,用这些对象通过getClass()方法调出的对象,其实都是由同一个class文件创建的,他们的地址值以及哈希码值都是一样的。

 

toString()方法

方法体为

public String toString() { //返回值为字符串类型
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

toString()的做作用是返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串表达式。

 

 但是通常在我们开发过程中并不会有需要用到这种字符串的情况,所以toString方法我们建议所有子类重写来调用,使其结果是一个简明而且易于读懂的信息表达式。 现在我们定义一个学生类,给予成员变量姓名和年龄:

 我们测试这个类,创建该类对象student,并运用toString方法,运行结果是该对象的字符串形式。

 

 我们现在在学生类中重写toString方法,使其返回的不再是对象地址值的字符串形式,而是对象中成员变量的具体内容(toString方法的重写在JDK中可以通过快捷键Alt+Insert实现

 这时测试类中运行结果就是我们想要的另一种更简单易懂的表达结果:

 equals()方法

方法体为

public boolean equals(Object obj) { //返回值为布尔类型
        return (this == obj);
    }

作用是指示其他某个对象是否与此对象“相等”。,也就是比较两个对象的地址值是否相等,是否为同一对象。如果相等则返回true,不相等则返回false。

 

 当然通常,我们比较两个对象是否为一个对象显然毫无意义。所以,我们更多的希望比较两个对象的成员变量值是否一样,一样则返回true,不一样则返回false。所以,我们通常也会对equals方法进行重写。 依然创建一个学生类,给予成员变量姓名和年龄:

 测试这个类,创建两个该类对象student1和student2,并运用equals方法来比较两个对象地址值是否相等:

 

 运行结果当然为false,现在我们在学生类中重写equals方法,使其比较的是两个对象的成员变量值是否相等(equals方法的重写在JDK中可以通过快捷键Alt+Insert实现): 

 

 

 参考:你知道Object中有哪些方法及其作用吗?

原文地址:https://www.cnblogs.com/zouhong/p/13348151.html