App下載

淺談Java中的祖宗類Object 以及常用方法的介紹

猿友 2021-07-21 15:34:57 瀏覽數 (2532)
反饋

如果說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()也有一個比較常用,但是不直接使用的方式。再平常我們會把字符串和某個對象用連接符號(+)連接在一起的時候,系統(tǒng)會默認把調用這個對象的 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() 方法。

這兩種比較方式有什么樣的區(qū)別呢?== 比較運算符,比較兩個變量是否指向同一個實例;而 equals() 方法值只比較兩個對象的內容是否一致。一般來說,字符串一般只關心內容一樣不一樣。

使用格式:

boolean result = obj.equals(Object o);

其中 obj 表示要進行比較的對象, o 表示被比較的對象。

下面我將用具體的代碼實例來展示一下 equals() 方法的用法:

場景需求:編寫一個 Java 程序,來實現(xiàn)用戶登錄的驗證功能。要求用戶從鍵盤上是輸入賬戶和密碼,如果賬戶和密碼與指定的內容一樣的時候,則顯示成功登錄;否則,會顯示登陸失敗。

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 對象,可以獲取該類的所有信息,包括了類名、父類以及它所實現(xiàn)的接口等等。

下面我們用一個代碼示例演示一下:

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("實現(xiàn)的接口有:");
        // 獲取實現(xiàn)的接口并輸出
        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
實現(xiàn)的接口有:
interface java.io.Serializable
interface java.lang.Comparable
interface java.lang.CharSequence


五、總結

以上就是關于 Java 中的祖宗類 Object 類的簡要介紹,以及該類三種最常用方法的詳細介紹。如果想要了解更多關于 Java Object類的其他方法的內容,請搜索W3Cschool以往的文章。如果這篇文章對您的學習有所幫助,還請大家能多多地關注和支持我們!


0 人點贊