Java中的父对象

在Java中,每个对象都有一个父对象。这个父对象是Java对象模型中的顶级对象,被称为Object类。所有的类都直接或间接地继承自Object类,因此可以说Object类是Java中所有类的父对象。

Object类的基本方法

Object类提供了一些基本的方法,这些方法可以被所有的Java对象调用。下表是Object类的一些常用方法:

方法名 描述
equals(Object obj) 用于判断两个对象是否相等
toString() 返回对象的字符串表示
hashCode() 返回对象的哈希码
getClass() 返回对象的类
wait() 线程等待
notify() 唤醒一个等待中的线程
notifyAll() 唤醒所有等待中的线程

下面是一个简单的示例,展示了如何使用Object类的一些方法:

public class ObjectExample {
    public static void main(String[] args) {
        // 创建两个对象
        Object obj1 = new Object();
        Object obj2 = new Object();

        // equals方法比较两个对象是否相等
        boolean isEqual = obj1.equals(obj2);
        System.out.println("obj1 equals obj2: " + isEqual);

        // toString方法返回对象的字符串表示
        String str = obj1.toString();
        System.out.println("obj1 toString: " + str);

        // hashCode方法返回对象的哈希码
        int hashCode = obj1.hashCode();
        System.out.println("obj1 hashCode: " + hashCode);

        // getClass方法返回对象的类
        Class<?> objClass = obj1.getClass();
        System.out.println("obj1 class: " + objClass.getName());

        // wait方法让线程等待
        synchronized (obj1) {
            try {
                obj1.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        // notify方法唤醒等待中的线程
        synchronized (obj1) {
            obj1.notify();
        }

        // notifyAll方法唤醒所有等待中的线程
        synchronized (obj1) {
            obj1.notifyAll();
        }
    }
}

equals方法

equals(Object obj)方法是用来判断两个对象是否相等的。默认情况下,它会使用对象的引用比较两个对象。也就是说,只有当两个对象引用同一个对象时,equals方法才返回true。但通常情况下,我们需要根据对象的内容来判断它们是否相等。

为了实现对象内容的比较,我们需要重写equals方法。下面是一个重写equals方法的示例:

public class Person {
    private String name;
    private int age;

    // 构造方法和其他方法省略

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }
}

在上面的示例中,equals方法首先判断两个对象的引用是否相同,如果相同则直接返回true。然后判断传入的对象是否为null或者与当前对象的类不同,如果是则返回false。最后,比较两个对象的内容,包括姓名和年龄是否相等。

toString方法

toString()方法返回对象的字符串表示。默认情况下,它返回一个包含类名和哈希码的字符串。但通常情况下,我们需要根据对象的属性来自定义toString方法的实现。

下面是一个重写toString方法的示例:

public class Person {
    private String name;
    private int age;

    // 构造方法和其他方法省略

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

在上面的示例中,toString方法返回一个包含姓名和年龄的字符串。

hashCode方法

hashCode()方法返回对象的哈希码。哈希码是一个由对象的内容计算出来的整数值,