Java Object 类

Java中的Object类是所有类的基类,提供了如equals、hashCode和toString等基础方法。子类可重写这些方法以实现特定行为,例如Person类中重写equals用于比较对象内容,重写hashCode获取对象的哈希值,以及toString返回对象的字符串形式。
摘要由CSDN通过智能技术生成

Java 中的 Object 类是所有类的根类,它是一个非常重要的类。

Object 类的定义和作用

Object 类是 Java 中所有类的根类,它是一个非常基础的类。在 Java 中,所有的类都是 Object 类的子类,因此 Object 类定义了所有 Java 类都具有的共性。

Object 类的作用包括:

  1. 提供了一些基本的方法,比如 getClass、equals、hashCode、toString 等方法。

  2. 允许所有的 Java 对象都可以使用这些基本方法。

  3. 允许所有 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 类的方法可以实现自定义的相等性、哈希码和字符串表示形式等功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风老魔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值