国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

App下載

淺談Java中的祖宗類(lèi)Object 以及常用方法的介紹

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

如果說(shuō)Java所有類(lèi)只能有一個(gè)父親,那就只能是 Object 類(lèi)。Object 類(lèi) Java 中所有類(lèi)的父類(lèi),也是我們常說(shuō)的祖宗類(lèi)。本篇文章我將和大家簡(jiǎn)單地說(shuō)一說(shuō)這個(gè)祖宗類(lèi) Object 的內(nèi)容,以及介紹幾種這個(gè)類(lèi)最常用的方法。

一、簡(jiǎn)介

正如前面所說(shuō)的,Object類(lèi)作為Java中最常用的內(nèi)置包裝類(lèi)之一,它是Java所有類(lèi)的父類(lèi),我們也常常從稱(chēng)之為祖宗類(lèi),來(lái)彰顯其地位之高。如果一個(gè)類(lèi)沒(méi)有指定父類(lèi),那么它默認(rèn)的父類(lèi)就是Object類(lèi)。因此,以下兩段代碼性質(zhì)是一樣的:

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

由于Java中的所有類(lèi)都是Object類(lèi)的子類(lèi),也因此可以調(diào)用該類(lèi)中的所有方法,常見(jiàn)方法如下:

Object類(lèi)常用方法

在這里面,同String()、equals()和getClass()三種方法是最常見(jiàn)也是最常用的。下面,我們將著重介紹這三種方法。


二、toString()方法

該方法從字面上來(lái)看,to 是得到、獲取,String 大家都公認(rèn)是個(gè)字符串的符號(hào)了,因此結(jié)合在一起,這個(gè)方法就是獲取字符串的方法的。官方的解釋?zhuān)褪欠祷貙?duì)象的字符串。

toString()也有一個(gè)比較常用,但是不直接使用的方式。再平常我們會(huì)把字符串和某個(gè)對(duì)象用連接符號(hào)(+)連接在一起的時(shí)候,系統(tǒng)會(huì)默認(rèn)把調(diào)用這個(gè)對(duì)象的 toString() 方法來(lái)返回一個(gè)字符串。

在 Object 類(lèi)中的 toString() 方法返回的是一個(gè)“運(yùn)行時(shí)類(lèi)名@十六進(jìn)制哈希值”,如:

// 定義Demo類(lèi),實(shí)際上繼承Object類(lèi)
class Demo {
}
public class ObjectDemo01 {
    public static void main(String[] args) {
        Demo d = new Demo(); // 實(shí)例化Demo對(duì)象
        System.out.println("不加toString()輸出:" + d);
        System.out.println("加上toString()輸出:" + d.toString());
    }
}

輸出結(jié)果:

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

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

從上述的輸出結(jié)果可見(jiàn),加不加 toString() 方法,輸出的都是一樣的結(jié)果。

因此,一般許多類(lèi)都會(huì)對(duì) toString() 方法進(jìn)行重寫(xiě)。

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);// 實(shí)例化Person對(duì)象
        System.out.println("對(duì)象信息:" + per);// 打印對(duì)象調(diào)用toString()方法
    }
}

輸出結(jié)果:

 對(duì)象信息:姓名:小明:年齡30

以上代碼就是對(duì) toString() 方法進(jìn)行了重寫(xiě),這樣直接輸出對(duì)象時(shí)調(diào)用的就是子類(lèi)重寫(xiě)過(guò)的該方法。


三、equals()方法

在學(xué)習(xí)字符串比較的時(shí)候,我們就學(xué)過(guò)兩種比較方式,一種是 == 比較運(yùn)算符,另一個(gè)就是接下來(lái)要講的 equals() 方法。

這兩種比較方式有什么樣的區(qū)別呢?== 比較運(yùn)算符,比較兩個(gè)變量是否指向同一個(gè)實(shí)例;而 equals() 方法值只比較兩個(gè)對(duì)象的內(nèi)容是否一致。一般來(lái)說(shuō),字符串一般只關(guān)心內(nèi)容一樣不一樣。

使用格式:

boolean result = obj.equals(Object o);

其中 obj 表示要進(jìn)行比較的對(duì)象, o 表示被比較的對(duì)象。

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

場(chǎng)景需求:編寫(xiě)一個(gè) Java 程序,來(lái)實(shí)現(xiàn)用戶(hù)登錄的驗(yàn)證功能。要求用戶(hù)從鍵盤(pán)上是輸入賬戶(hù)和密碼,如果賬戶(hù)和密碼與指定的內(nèi)容一樣的時(shí)候,則顯示成功登錄;否則,會(huì)顯示登陸失敗。

import java.util.Scanner;
public class Test01 {
    // 驗(yàn)證用戶(hù)名和密碼
    public static boolean validateLogin(String uname, String upwd) {
        boolean con = false;
        if (uname.equals("admin") && upwd.equals("admin")) { // 比較兩個(gè) String 對(duì)象
            con = true;
        } else {
            con = false;
        }
        return con;
    }
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("------歡迎使用大數(shù)據(jù)管理平臺(tái)------");
        System.out.println("用戶(hù)名:");
        String username = input.next(); // 獲取用戶(hù)輸入的用戶(hù)名
        System.out.println("密碼:");
        String pwd = input.next(); // 獲取用戶(hù)輸入的密碼
        boolean con = validateLogin(username, pwd);
        if (con) {
            System.out.println("登錄成功!");
        } else {
            System.out.println("用戶(hù)名或密碼有誤!");
        }
    }
}

失敗顯示:

------歡迎使用大數(shù)據(jù)管理平臺(tái)------
用戶(hù)名:
adimn
密碼:
admin
用戶(hù)名或密碼有誤!

成功顯示:

 ------歡迎使用大數(shù)據(jù)管理平臺(tái)------

用戶(hù)名:
admin
密碼:
admin
登陸成功!


四、getClass()方法

從該方法的字面上看,get 獲得,獲?。?Class 都知道是類(lèi)。因此這個(gè)方法從字面上看,就是獲取類(lèi)名的方法。在官方的解釋是,返回當(dāng)前對(duì)象所屬的類(lèi),是一個(gè) Class 對(duì)象。通過(guò)這個(gè) Class 對(duì)象,可以獲取該類(lèi)的所有信息,包括了類(lèi)名、父類(lèi)以及它所實(shí)現(xiàn)的接口等等。

下面我們用一個(gè)代碼示例演示一下:

public class Test02 {
    public static void printClassInfo(Object obj) {
        // 獲取類(lèi)名
        System.out.println("類(lèi)名:" + obj.getClass().getName());
        // 獲取父類(lèi)名
        System.out.println("父類(lèi):" + obj.getClass().getSuperclass().getName());
        System.out.println("實(shí)現(xiàn)的接口有:");
        // 獲取實(shí)現(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);
    }
}

運(yùn)行結(jié)果:

類(lèi)名:java.lang.String
父類(lèi):java.lang.Object
實(shí)現(xiàn)的接口有:
interface java.io.Serializable
interface java.lang.Comparable
interface java.lang.CharSequence


五、總結(jié)

以上就是關(guān)于 Java 中的祖宗類(lèi) Object 類(lèi)的簡(jiǎn)要介紹,以及該類(lèi)三種最常用方法的詳細(xì)介紹。如果想要了解更多關(guān)于 Java Object類(lèi)的其他方法的內(nèi)容,請(qǐng)搜索W3Cschool以往的文章。如果這篇文章對(duì)您的學(xué)習(xí)有所幫助,還請(qǐng)大家能多多地關(guān)注和支持我們!


0 人點(diǎn)贊