Java中的Object類的幾個方法


  Object類被稱為上帝類,也被稱為祖宗類。在定義Java類時,如果沒有指定父類,那么默認都會去繼承Object類。配合Java的向上類型轉換,借助Object類就可以完成很多工作了。

  在Object類中,有幾個常用的方法,比如getClass()、toString()和equals()這三個方法。它們在Object.java的實現如下:(Object.java的源碼在Java安裝目錄下的src.zip中,其目錄結構為src\java\lang\Object.java)。

 1 public final native Class<?> getClass();
 2 
 3 
 4 public boolean equals(Object obj) {
 5     return (this == obj);
 6 }
 7 
 8 public String toString() {
 9     return getClass().getName() + "@" + Integer.toHexString(hashCode());
10 }

   對於getClass()來說,它可以在運行時獲得類。

  equals()通常用來進行比較,在Object類中,它進行了引用的比較,只有引用相同時會返回true。但是這樣並不是我們想要的比較的情況,比如字符串的比較是比較每個字符是否相同。那么在String類中就會對equals()方法進行重寫,String類中的equals()方法的實現如下:(String.java的源碼在Java安裝目錄下的src.zip中,其目錄結構為src\java\lang\String.java)。

 1 public boolean equals(Object anObject) {
 2     if (this == anObject) {
 3         return true;
 4     }
 5     if (anObject instanceof String) {
 6         String anotherString = (String)anObject;
 7         int n = value.length;
 8         if (n == anotherString.value.length) {
 9             char v1[] = value;
10             char v2[] = anotherString.value;
11             int i = 0;
12             while (n-- != 0) {
13                 if (v1[i] != v2[i])
14                     return false/;
15                 i++;
16             }
17             return true;
18         }
19     }
20     return false;
21 }

  字符串的比較,進行了幾次判斷:

1、首先判斷引用相同,如果相同則返回true;

2、判斷傳入的對象是否為String,如果不是String,則直接返回false,沒有比較的必要,狗和人怎么比;

3、比較字符串的長度,如果兩個字符串的長度不相同,也就不用比較了,長度不同顯而易見是不相同了;

4、上面的比較都沒成立,則進行逐字符的比較。

 

  對於兩個對象的比較,通常我們需要類似像String類中的equals()方法一樣,這樣就需要重寫equals()方法。

 

  第三個方法toString()默認在Object類中輸出當前運行時類和一個HashCode,這對於我們幫助也並不是特別大,對於自己寫的類,可以將類中的所有屬性進行輸出,當重寫了toString()方法后,直接使用System.out.println()中傳對象名,即可默認調用對象的toString()方法。

 

  作為初學者,就是要進行不斷的寫代碼,還有就是大量的進行記錄自己所學的內容,讓自己加深印象,還有就是忘記的時候方便的查找,記錄在這里隨時方便自己!


 

我的微信公眾號:“碼農UP2U”

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM