首页 > 编程笔记 > Java笔记 阅读:11

Java Object类的用法(附带实例)

在 Java 语言中,Object 类是所有类的父类,该类是 java.lang 包中的一个类,所有的类都是直接或者间接地继承该类。

如果一个类没有使用 extends 关键字,则默认该类是 Object 的子类,所以说 Object 类是所有类的源。

也就是说,以下两种类的定义的最终效果是完全相同的:
class Dog {}
class Dog extends Object {}
Object 类中提供了很多方法,下面讲解常用的 3 个方法,如下表所示。

表:Object类的常用方法
方法 方法描述
public boolean equals(Object obj) 判断两个对象所指向的是否为同一个对象
public final Class getClass() 返回运行 getClass()方法的对象所属的类
public String toString() 取得对象信息,返回该对象的字符串表示

Java Object.equals()方法

前面我们学习了使用比较运算符“==”比较两个变量是否相等。除此之外,还可以使用 equals() 方法比较两个变量是否相等。

接下来,通过案例来演示如何使用 equals() 方法比较两个对象是否相等。
class Cat {
    String name;
    public Cat(String name) {
        this.name = name;
    }
}

public class Demo {
    public static void main(String[] args) {
        Cat cat1 = new Cat("机器猫");
        Cat cat2 = new Cat("大脸猫");
        System.out.println("cat1.equals(cat2)是" + cat1.equals(cat2));
        System.out.println("cat1==cat2是" + (cat1 == cat2));
    }
}
程序的运行结果如下:

cat1.equals(cat2)是false
cat1==cat2是false

从程序的运行结果中可以发现,equals() 方法与直接使用“==”运算符比较两个对象是否相等的结果相同,这是由于 equals() 方法的默认实现就是用“==”运算符检测两个引用变量是否指向同一对象,即比较的是对象在计算机内存中的地址。

Java Object.getClass()方法

getClass() 方法是 Object 类里所定义的方法,而 Object 类是所有类的父类,所以在任何类中均可调用这个方法。

getClass() 方法的功能是返回运行时的对象所属的类。一个 java.lang.Class 对象代表了 Java 应用程序运行时所加载的类或接口的实例,Class 对象由 JVM 自动产生,每当一个类被加载时,JVM 就自动为其生成一个 Class 对象。

由于 Class 类没有构造方法,所以可以通过 Object 类的 getClass() 方法来取得对象对应的 Class 对象。在取得 Class 对象之后,就可以通过 Class 对象的一些方法来获取类的基本信息。

接下来,通过案例来演示 getClass() 方法的使用。
package c.biancheng.net;

class Cat {
    private String name;
    public Cat(String name) {
        this.name = name;
    }
}

public class Demo {
    public static void main(String[] args) {
        Cat cat = new Cat("机器猫");
        Class obj = cat.getClass(); // 使用对象cat调用getClass()方法
        System.out.println("对象cat所属的类为:" + obj);
    }
}
程序的运行结果如下:

对象cat所属的类为:class c.biancheng.net.Cat

从程序运行结果中可发现,Cat 类的对象 cat 指向新的对象,并去调用 getClass() 方法,该方法继承自 Object 类,虽然在 Cat 类中没有定义它,但是可以由对象 cat 调用。getClass() 方法返回的是 Class 类型,所以需要定义一个 Class 类型变量 obj 接收。

注意,第 12 行代码中 Class 的首字母“C”为大写。

Java Object.toString()方法

toString() 方法的功能是将调用该方法的对象内容转换为字符串,并返回该字符串,返回内容由该对象所属类名、@ 和对象十六进制形式的内存地址组成。

例如:
class Cat {
    private String name;
    private int age;
    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class Demo {
    public static void main(String[] args) {
        Cat cat = new Cat("机器猫",5);
        // 调用对象的toString()方法
        System.out.println(cat.toString());
        // 直接打印对象
        System.out.println(cat);
    }
}
程序的运行结果如下:

Cat@6ff3c5b5
Cat@6ff3c5b5

程序中默认打印了对象信息,从程序运行结果中可发现,直接打印对象和打印对象的 toString() 方法返回值相同,也就是说对象输出一定会调用 Object 类的 toString() 方法。

相关文章