首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Object 类核心方法详解:equals、toString 与哈希码

     編輯:Java 相關知識

Object 类:所有类的祖先

Java 中所有类隐式或显式继承 java.lang.Object。子类继承 Object 的方法,常需重写以符合业务语义。核心方法包括:

  • equals(Object obj):默认比较引用地址(即 ==),通常重写为比较对象内容(如数据成员)。
  • toString():默认返回 类名@哈希码,重写可返回有意义的字符串表示。
  • hashCode():返回哈希码,配合 equals 用于哈希容器,重写 equals 时必须重写 hashCode。

equals 重写实战

class Demo {
    private int num;
    Demo(int num) { this.num = num; }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Demo)) return false;
        Demo d = (Demo) obj;          // 向下转型
        return this.num == d.num;     // 比较内容
    }

    @Override
    public String toString() {
        return "demo:" + num;
    }
}

public class ObjectDemo {
    public static void main(String[] args) {
        Demo d1 = new Demo(4);
        Demo d2 = new Demo(4);
        System.out.println(d1);           // 自动调用 toString() -> demo:4
        System.out.println(d1.equals(d2)); // true,内容相等
    }
}

关键点:

  1. 参数类型为 Object,需 instanceof 判断后向下转型。
  2. 比较业务关键字段(此处为 num)。
  3. 满足自反性、对称性、传递性、一致性、非空性。

toString 与打印对象

System.out.println(obj) 会自动调用 obj.toString()。重写后可直接输出业务信息,调试极其方便。

最佳实践提醒

  • 重写 equals 必须重写 hashCode,保证相等对象哈希码相等。
  • 优先使用 Objects.equals()、Objects.hash()(Java 7+)简化实现。
  • IDE 可自动生成标准实现,减少手写错误。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved