溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java Object類方法實例分析

發(fā)布時間:2022-05-10 13:48:17 來源:億速云 閱讀:135 作者:zzz 欄目:開發(fā)技術(shù)

本文小編為大家詳細介紹“Java Object類方法實例分析”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當(dāng),希望這篇“Java Object類方法實例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

1.equals方法

1.API中equals方法的介紹

Java Object類方法實例分析

2.==和equals 的對比

  • == 既可以判斷基本類型,又可以判斷引用類型,如果判斷的是基本類型,判斷的是值是否相等,如果判斷的是引用類型,則判斷的是地址是否相等,即判斷是不是同一個對象。

  • equals 方法是 Object 類中的方法,只能判斷引用類型,默認的是判斷地址是否相等,子類中往往會重寫該方法,重寫后用于判斷內(nèi)容是否相等

我們可以看看 Object,String 和 Integer中的 equals 方法的 JDK 源碼。

Object o = new Object();
o.equals(1);//Object類中的equals方法
System.out.println("hello".equals("hello"));//String中的equals方法
Integer integer = new Integer(5);
System.out.println(integer.equals(5));//Integer中的equals方法
//將光標放在equals方法上,按Ctrl同時按鼠標左鍵,就可跳轉(zhuǎn)到String和Integer中的equals方法的JDK源碼。
//Object類中的equals方法
public boolean equals(Object obj) {
        return (this == obj);//判斷是不是當(dāng)前對象
}
//String類中重寫的equals方法
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;//首先判斷是不是當(dāng)前對象
        }
        if (anObject instanceof String) {//判斷當(dāng)前類型是不是字符串類型
            String anotherString = (String)anObject;//向下轉(zhuǎn)型
            int n = value.length;//保存?zhèn)魅胱址拈L度
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])//一個一個字符比較
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
 //Integer類中重寫的equals方法
public boolean equals(Object obj) {
        if (obj instanceof Integer) {//判斷當(dāng)前類型是不是Integer類型
            return value == ((Integer)obj).intValue();//向下轉(zhuǎn)型
        }
        return false;
    }

2.hashCode方法

1.API中hashCode方法的介紹

Java Object類方法實例分析

2.提高具有哈希結(jié)構(gòu)容器的的效率。

3.兩個引用,如果指向的同一個對象,哈希值一樣,指向不同對象,哈希值就不一樣。

4.哈希值主要根據(jù)地址來的,但不能將哈希值等價于地址。

3.toString方法

1.API中toString方法的介紹

Java Object類方法實例分析

2.默認返回:全類名(包名+類名)+@+哈希值的十六進制。

3.往往重寫toString方法,用于返回對象屬性。

4.當(dāng)直接輸出對象時,toString方法會被默認的調(diào)用。

//JDK中的toString方法源碼
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    //返回全類名(包名+類名)+@+哈希值的十六進制
    }
//重寫toString方法
 @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }//往往重寫toString方法,用于返回對象屬性。

4.finalize方法

1.API中finalize方法的介紹

Java Object類方法實例分析

2.對象被回收時,系統(tǒng)自動調(diào)用該對象的finalize方法。子類可以重寫該方法,做一些釋放資源的操作。

3.當(dāng)某個對象沒有引用時,jvm就會使用垃圾回收機制來銷毀此對象,銷毀對象前會先調(diào)用finalize方法。

4.垃圾回收機制的調(diào)用,是由系統(tǒng)的GC算法來決定的,也可通過System.gc()主動觸發(fā)。

讀到這里,這篇“Java Object類方法實例分析”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI