首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java hashCode 與 toString 輸出差異解析

     編輯:程式設計疑難解答

直接列印物件 System.out.println(emp) 會呼叫 toString(),輸出格式為 類名@十六進位hashCode;而 emp.hashCode() 回傳十進位整數。兩者本質相同,僅進制不同。

原始碼驗證

public class Test {
    public static void main(String[] args) {
        Emp emp = new Emp();
        System.out.println(emp);           // 等同 emp.toString()
        System.out.println(emp.hashCode()); // 十進位
    }
}
class Emp { String id; String name; }

Object.toString() 實作

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

關鍵結論

  • hashCode() 依預設實作從記憶體位址衍生(JVM 相關),同一物件多次呼叫回傳相同值。
  • toString() 將同一 hash 值轉為十六進位字串,前綴類名與 @。
  • 若覆寫 equals(),必須同步覆寫 hashCode() 以符合契約。

理解此機制有助於除錯時正確解讀物件列印輸出。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved