浅谈Java中的祖宗类Object 以及常用方法的介绍

2021-07-21 15:34:57 浏览数 (6)

如果说Java所有类只能有一个父亲,那就只能是 Object 类。Object 类 Java 中所有类的父类,也是我们常说的祖宗类。本篇文章我将和大家简单地说一说这个祖宗类 Object 的内容,以及介绍几种这个类最常用的方法。

一、简介

正如前面所说的,Object类作为Java中最常用的内置包装类之一,它是Java所有类的父类,我们也常常从称之为祖宗类,来彰显其地位之高。如果一个类没有指定父类,那么它默认的父类就是Object类。因此,以下两段代码性质是一样的:

public class Myee{...}
public class Myee extends Object{...}

由于Java中的所有类都是Object类的子类,也因此可以调用该类中的所有方法,常见方法如下:

Object类常用方法

在这里面,同String()、equals()和getClass()三种方法是最常见也是最常用的。下面,我们将着重介绍这三种方法。


二、toString()方法

该方法从字面上来看,to 是得到、获取,String 大家都公认是个字符串的符号了,因此结合在一起,这个方法就是获取字符串的方法的。官方的解释,就是返回对象的字符串。

toString()也有一个比较常用,但是不直接使用的方式。再平常我们会把字符串和某个对象用连接符号(+)连接在一起的时候,系统会默认把调用这个对象的 toString() 方法来返回一个字符串。

在 Object 类中的 toString() 方法返回的是一个“运行时类名@十六进制哈希值”,如:

// 定义Demo类,实际上继承Object类
class Demo {
}
public class ObjectDemo01 {
    public static void main(String[] args) {
        Demo d = new Demo(); // 实例化Demo对象
        System.out.println("不加toString()输出:" + d);
        System.out.println("加上toString()输出:" + d.toString());
    }
}

输出结果:

 不加toString()输出:Demo@15db9742

加上toString()输出:Demo@15db9742

从上述的输出结果可见,加不加 toString() 方法,输出的都是一样的结果。

因此,一般许多类都会对 toString() 方法进行重写。

public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String toString() {
        return "姓名:" + this.name + ":年龄" + this.age;
    }
    public static void main(String[] args) {
        Person per = new Person("小明", 30);// 实例化Person对象
        System.out.println("对象信息:" + per);// 打印对象调用toString()方法
    }
}

输出结果:

 对象信息:姓名:小明:年龄30

以上代码就是对 toString() 方法进行了重写,这样直接输出对象时调用的就是子类重写过的该方法。


三、equals()方法

在学习字符串比较的时候,我们就学过两种比较方式,一种是 == 比较运算符,另一个就是接下来要讲的 equals() 方法。

这两种比较方式有什么样的区别呢?== 比较运算符,比较两个变量是否指向同一个实例;而 equals() 方法值只比较两个对象的内容是否一致。一般来说,字符串一般只关心内容一样不一样。

使用格式:

boolean result = obj.equals(Object o);

其中 obj 表示要进行比较的对象, o 表示被比较的对象。

下面我将用具体的代码实例来展示一下 equals() 方法的用法:

场景需求:编写一个 Java 程序,来实现用户登录的验证功能。要求用户从键盘上是输入账户和密码,如果账户和密码与指定的内容一样的时候,则显示成功登录;否则,会显示登陆失败。

import java.util.Scanner;
public class Test01 {
    // 验证用户名和密码
    public static boolean validateLogin(String uname, String upwd) {
        boolean con = false;
        if (uname.equals("admin") && upwd.equals("admin")) { // 比较两个 String 对象
            con = true;
        } else {
            con = false;
        }
        return con;
    }
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("------欢迎使用大数据管理平台------");
        System.out.println("用户名:");
        String username = input.next(); // 获取用户输入的用户名
        System.out.println("密码:");
        String pwd = input.next(); // 获取用户输入的密码
        boolean con = validateLogin(username, pwd);
        if (con) {
            System.out.println("登录成功!");
        } else {
            System.out.println("用户名或密码有误!");
        }
    }
}

失败显示:

------欢迎使用大数据管理平台------
用户名:
adimn
密码:
admin
用户名或密码有误!

成功显示:

 ------欢迎使用大数据管理平台------

用户名:
admin
密码:
admin
登陆成功!


四、getClass()方法

从该方法的字面上看,get 获得,获取; Class 都知道是类。因此这个方法从字面上看,就是获取类名的方法。在官方的解释是,返回当前对象所属的类,是一个 Class 对象。通过这个 Class 对象,可以获取该类的所有信息,包括了类名、父类以及它所实现的接口等等。

下面我们用一个代码示例演示一下:

public class Test02 {
    public static void printClassInfo(Object obj) {
        // 获取类名
        System.out.println("类名:" + obj.getClass().getName());
        // 获取父类名
        System.out.println("父类:" + obj.getClass().getSuperclass().getName());
        System.out.println("实现的接口有:");
        // 获取实现的接口并输出
        for (int i = 0; i < obj.getClass().getInterfaces().length; i++) {
            System.out.println(obj.getClass().getInterfaces()[i]);
        }
    }
    public static void main(String[] args) {
        String strObj = new String();
        printClassInfo(strObj);
    }
}

运行结果:

类名:java.lang.String
父类:java.lang.Object
实现的接口有:
interface java.io.Serializable
interface java.lang.Comparable
interface java.lang.CharSequence


五、总结

以上就是关于 Java 中的祖宗类 Object 类的简要介绍,以及该类三种最常用方法的详细介绍。如果想要了解更多关于 Java Object类的其他方法的内容,请搜索W3Cschool以往的文章。如果这篇文章对您的学习有所帮助,还请大家能多多地关注和支持我们!


1 人点赞