首頁  >  文章  >  Java  >  Java Object類別方法實例分析

Java Object類別方法實例分析

王林
王林轉載
2023-04-18 17:49:051030瀏覽

1.equals方法

1.API中equals方法的介紹

Java Object類別方法實例分析

#2.==和equals 的比較

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

  • equals 方法是Object 類別中的方法,只能判斷引用類型,預設的是判斷位址是否相等,子類別中往往會重寫該方法,重寫後用於判斷內容是否相等

我們可以看看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同时按鼠标左键,就可跳转到String和Integer中的equals方法的JDK源码。
//Object类中的equals方法
public boolean equals(Object obj) {
        return (this == obj);//判断是不是当前对象
}
//String类中重写的equals方法
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;//首先判断是不是当前对象
        }
        if (anObject instanceof String) {//判断当前类型是不是字符串类型
            String anotherString = (String)anObject;//向下转型
            int n = value.length;//保存传入字符串的长度
            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) {//判断当前类型是不是Integer类型
            return value == ((Integer)obj).intValue();//向下转型
        }
        return false;
    }

2.hashCode方法

1.API中hashCode方法的介紹

Java Object類別方法實例分析

2.提高具有雜湊結構容器的效率。

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

4.哈希值主要根據位址來的,但不能將哈希值等價於位址。

3.toString方法

1.API中toString方法的介紹

Java Object類別方法實例分析

#2.預設回傳:全類別名稱(包名類別名稱) @ 雜湊值的十六進位。

3.往往重寫toString方法,用於傳回物件屬性。

4.當直接輸出物件時,toString方法會被預設的呼叫。

//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.物件被回收時,系統會自動調用該物件的finalize方法。子類別可以重寫該方法,做一些釋放資源的操作。

3.當某個對象沒有引用時,jvm就會使用垃圾回收機制來銷毀此對象,銷毀對象前會先呼叫finalize方法。

4.垃圾回收機制的調用,是由系統的GC演算法來決定的,也可透過System.gc()主動觸發。

以上是Java Object類別方法實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除