Java 中的 Object 类是所有类的根类,它是一个非常重要的类。
Object 类的定义和作用
Object 类是 Java 中所有类的根类,它是一个非常基础的类。在 Java 中,所有的类都是 Object 类的子类,因此 Object 类定义了所有 Java 类都具有的共性。
Object 类的作用包括:
-
提供了一些基本的方法,比如 getClass、equals、hashCode、toString 等方法。
-
允许所有的 Java 对象都可以使用这些基本方法。
-
允许所有 Java 类都可以使用 Object 类的方法,比如 wait、notify、notifyAll 等方法。
Object 类的常用方法
Object 类中定义了许多常用的方法,包括:
getClass()
该方法返回一个对象的运行时类。
equals(Object obj)
该方法用于判断两个对象是否相等。默认情况下,该方法会比较两个对象的引用地址。如果需要比较对象的内容,则需要在子类中重写该方法。
hashCode()
该方法返回一个对象的哈希码。
toString()
该方法返回一个对象的字符串表示形式。默认情况下,该方法返回对象的类名和哈希码。如果需要返回对象的内容,则需要在子类中重写该方法。
wait()
该方法将当前线程放入等待状态,直到另一个线程调用该对象的 notify 或 notifyAll 方法,或者等待时间到期。
notify()
该方法唤醒一个在该对象上等待的线程。
notifyAll()
该方法唤醒在该对象上等待的所有线程。
以下是一个 Object 类常用方法的示例代码:
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (!(obj instanceof Person)) {
return false;
}
Person p = (Person) obj;
return this.name.equals(p.name) && this.age == p.age;
}
@Override
public int hashCode() {
int result = 17;
result = 31 * result + name.hashCode();
result = 31 * result + age;
return result;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
public class Main {
public static void main(String[] args) {
Person p1 = new Person("Alice", 20);
Person p2 = new Person("Bob", 30);
Person p3 = new Person("Alice", 20);
System.out.println(p1.equals(p2)); // 输出 false
System.out.println(p1.equals(p3)); // 输出 true
System.out.println(p1.hashCode()); // 输出 -1661129897
System.out.println(p2.hashCode()); // 输出 -1661129866
System.out.println(p3.hashCode()); // 输出 -1661129897
System.out.println(p1.toString()); // 输出 Person{name='Alice', age=20}
}
}
在这个示例中,我们定义了一个 Person 类,并重写了 equals、hashCode 和 toString 方法。在主函数中,我们创建了三个 Person 对象,并比较了它们的相等性、哈希码和字符串表示形式。
可以看到,p1 和 p2 不相等,而 p1 和 p3 相等。同时,p1 和 p3 的哈希码相等。最后,我们输出了 p1 的字符串表示形式。
总结
Object 类是 Java 中所有类的根类,它提供了一些基本的方法,比如 getClass、equals、hashCode、toString 等方法。所有的 Java 对象都可以使用这些基本方法,所有 Java 类都可以使用 Object 类的方法,比如 wait、notify、notifyAll 等方法。在子类中重写 Object 类的方法可以实现自定义的相等性、哈希码和字符串表示形式等功能。