Object类

Object 是 Java 所有类的根父类。一个类如果没有显式继承其他类,就默认继承 Object

常用方法

方法作用
toString()返回对象的字符串表示
equals(Object obj)判断两个对象是否相等
hashCode()返回对象的哈希值
getClass()获取对象运行时类信息

toString()

默认输出通常类似:

类名@哈希值

实际开发中常重写 toString(),方便打印对象内容。

class Student {
    String name;
 
    @Override
    public String toString() {
        return "Student{name='" + name + "'}";
    }
}

equals()

默认的 equals()=类似,比较两个引用是否指向同一个对象。

如果希望按内容比较,需要重写:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (!(obj instanceof Student)) return false;
    Student other = (Student) obj;
    return this.name.equals(other.name);
}

hashCode()

如果重写 equals(),通常也要重写 hashCode()。原因是 HashSetHashMap 等集合依赖哈希值定位对象。

基本规则:

  • 两个对象 equals()truehashCode() 必须相同。
  • 两个对象 hashCode() 相同,equals() 不一定为 true

和多态的关系

所有对象都可以看作 Object 类型:

Object obj = new Student();
System.out.println(obj.toString());

如果子类重写了 toString(),这里会执行子类版本,体现多态

相关:类与对象子类与继承