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()。原因是 HashSet、HashMap 等集合依赖哈希值定位对象。
基本规则:
- 两个对象
equals()为true,hashCode()必须相同。 - 两个对象
hashCode()相同,equals()不一定为true。
和多态的关系
所有对象都可以看作 Object 类型:
Object obj = new Student();
System.out.println(obj.toString());如果子类重写了 toString(),这里会执行子类版本,体现多态。