所有 Object 類方法,以及更多關於 toString() 方法的方法 - 1

“嗨,阿米戈!”

“你好!”

“今天我們要研究的是Object類,
你已經接觸過了,你知道Object是所有類的基類,它幾乎沒有數據,但是它有幾個方法。”

“為什麼它需要方法?真的有人創建 Object 類的實例嗎?”

“這樣看:Object 類中的方法在所有類中都是通用的。換句話說,Java 的創建者確定了幾種在他們看來每個類都應該擁有的方法,並將它們添加到 Object 類中。”

“當與多態性(在派生類中覆蓋 Object 類的方法的能力)結合時,這將成為一個非常強大的工具。”

“讓我們看看這些方法是什麼:”

方法 描述
public String toString()
返回對象的字符串表示形式。
public native int hashCode()
public boolean equals(Object obj)
一對用於比較對象的方法。
public final native Class getClass()
返回描述當前類的特殊對象。
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout)
public final void wait(long timeout, intnanos)
public final void wait()
用於控制從不同線程訪問對象的方法。用於線程同步。
protected void finalize()
此方法允許您釋放本機非 Java 資源:關閉文件、流等。
protected native Object clone()
此方法允許您克隆對象:創建對象的副本。

“這些方法可以分為6組,其中一些你已經熟悉了,剩下的我們會在後續的課程中熟悉。”

“出於某種原因,我在這裡看不到任何有用的東西。”

“朋友!如果這些方法不重要,他們就不會將它們添加到每個對像中!所以,我建議你更仔細地了解這些是什麼以及為什麼需要它們。如果它們對你來說不重要,那麼你要么沒有理解某事,要么沒有正確理解某事。”

“好的,我會仔細聽的。”

“讓我們從 toString() 方法開始。

“這個方法可以讓你得到任何對象的文本描述。它在 Object 類中的實現非常簡單:”

return getClass().getName() + "@" + Integer.toHexString(hashCode());

“getClass() 和 hashCode() 也是 Object 類的方法。
調用此方法通常會產生如下結果:”

java.lang.Object@12F456

“這樣的描述有什麼用呢?”

“這個描述讓你知道調用該方法的對象的類。你還可以區分對象;不同的對像在@符號後會有不同的數字。”

“但這個方法的真正價值在於其他地方。這個方法可以在任何類中被覆蓋,以返回更詳細或更合適的對象描述。”

“但還有更多。因為您可以獲得每個對象的文本表示,Java 使您可以實現對向對象‘添加’字符串的支持。檢查一下
:”

代碼 到底發生了什麼
int age = 18;
System.out.println("Age is " + age);

String s = String.valueOf(18);
String result = "Age is " + s;
System.out.println(result);
Student st = new Student("Vincent");
System.out.println("Student is " + st);

Student st = new Student("Vincent");
String result = "Student is " + st.toString();
System.out.println(result);
Car car = new Porsche();
System.out.println("My car is " + car);

Car car = new Porsche();
String result = "My car is " + car.toString();
System.out.println(result);

“是的,我經常使用這個。特別是當我在寫程序或尋找錯誤時。這是一個有用的操作。”