在Java中,每一個對象都是從Object類繼承而來。Object類是Java中所有類的祖先類,也是Java中最基本的類。
一、Object類的概述
Object類是所有Java類的父類。如果在類的聲明中沒有使用extends關鍵字指定父類,則默認繼承自Object類。
Object類中有一些基本的方法,它們在其它類中也都可以使用。這些方法包括:
- public boolean equals(Object obj):判斷當前對象與另一個對象是否相等。
- public int hashCode():返回當前對象的哈希值。
- public String toString():返回當前對象的字符串表示。
- public final void notify():喚醒在當前對象上等待的單個線程。
- public final void notifyAll():喚醒在當前對象上等待的所有線程。
- public final void wait() throws InterruptedException:使當前線程等待,直到另一個線程調用該對象的notify()方法或notifyAll()方法。
- public final void wait(long timeout) throws InterruptedException:使當前線程等待指定的毫秒數,直到另一個線程調用該對象的notify()方法或notifyAll()方法。
- public final void wait(long timeout, int nanos) throws InterruptedException:使當前線程等待指定的毫秒數和納秒數,直到另一個線程調用該對象的notify()方法或notifyAll()方法。
- protected void finalize() throws Throwable:當垃圾收集器確定沒有對該對象的更多引用時,會調用這個方法來清理對象。
二、Object類中的方法
1. equals方法
equals方法是用來判斷兩個對象是否相等的。這個方法最初是在Object類中定義的,所有的Java類都繼承了這個方法。然而,在默認情況下,equals方法將比較對象的引用,而不是對象的值。因此,需要重寫equals方法,以便在自己的類中比較對象的值。
class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof Student)) { return false; } Student student = (Student) obj; return this.name.equals(student.name) && this.age == student.age; } } Student s1 = new Student("Alice", 20); Student s2 = new Student("Alice", 20); System.out.println(s1.equals(s2)); // 輸出true
2. hashCode方法
hashCode方法返回當前對象的哈希碼值,它是一個整數。在Java中,哈希碼值用於存儲對象,在 HashMap、HashSet等集合類中,對象的哈希值決定了對象在集合中的存儲位置。
Object類中默認的hashCode方法返回的是對象的內存地址。
Student s1 = new Student("Alice", 20); System.out.println(s1.hashCode()); // 輸出1956725890
如果要重寫hashCode方法,需要滿足以下兩個條件:
- 當兩個對象相等時,它們的hashCode方法應該返回相同的值。
- 當兩個對象不相等時,它們的hashCode方法返回值可以相同,也可以不同。
3. toString方法
toString方法返回一個代表對象字符串的字符串。默認情況下,toString方法返回的是對象類的名字和該對象的哈希碼值的十六進制表示。
Student s1 = new Student("Alice", 20); System.out.println(s1.toString()); // 輸出"Student@4554617c"
可以重寫toString方法,以便返回更有意義的字符串,方便調試和日誌記錄。
class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String toString() { return "Student(name=" + this.name + ", age=" + this.age + ")"; } } Student s1 = new Student("Alice", 20); System.out.println(s1.toString()); // 輸出"Student(name=Alice, age=20)"
4. finalize方法
finalize方法是Java中的垃圾回收機制使用的方法。它在對象成為垃圾之前被調用,用於釋放對象佔用的資源。
在垃圾回收機制運行時,會搜索內存中的對象,並把被判定為垃圾的對象加入隊列中。當垃圾回收器判定對象為可終結狀態時,它會調用對象的finalize方法,清理對象佔用的資源。
三、總結
在Java中,所有類都繼承自Object類。Object類包含了一些基本的方法,例如equals、hashCode、toString和finalize方法。
這些方法可以在自定義類中進行重寫,以便滿足實際情況的需求,方便對象值比較、哈希碼值計算、字符串表示和垃圾回收操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/295406.html