Java所有类的基类

在Java中,所有的类都继承自一个基类。这个基类被称为java.lang.Object。这意味着,每个Java类都可以使用Object类的方法和属性。Object类是Java类层次结构中的根类,它提供了一些通用的方法,用于处理对象的创建、比较、克隆、回收和字符串表示。

Object类的方法

1. toString()

Object类中的toString()方法用于返回一个表示对象的字符串。默认情况下,toString()方法返回对象的类名和内存地址的字符串表示。如果需要以自定义的方式显示对象的内容,可以重写这个方法。

以下是一个示例代码,演示了如何重写toString()方法:

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

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

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

public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 30);
        System.out.println(person.toString());
    }
}

输出结果:

Person [name=John, age=30]

2. equals()

Object类中的equals()方法用于比较两个对象是否相等。默认情况下,equals()方法比较的是对象的内存地址。如果需要比较对象的内容,可以重写这个方法。

以下是一个示例代码,演示了如何重写equals()方法:

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

    public Person(String name, int age) {
        this.name = name;
        this.age = 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);
    }
}

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("John", 30);
        Person person2 = new Person("John", 30);

        System.out.println(person1.equals(person2));  // true
    }
}

输出结果:

true

3. hashCode()

Object类中的hashCode()方法用于返回对象的哈希码。默认情况下,hashCode()方法返回对象的内部地址。在重写equals()方法时,通常也需要同时重写hashCode()方法。

以下是一个示例代码,演示了如何重写hashCode()方法:

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

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        // ...
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 30);
        System.out.println(person.hashCode());
    }
}

输出结果:

1984368112

4. clone()

Object类中的clone()方法用于创建并返回对象的副本。这个方法在对象的克隆过程中使用。如果需要实现对象的克隆,需要实现Cloneable接口并重写clone()方法。

以下是一个示例代码,演示了如何实现对象的克隆:

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

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("John", 30);

        try {
            Person person2 = (Person) person1.clone();
            System.out.println(person1.equals(person2));  // true
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}

输出结果:

true

总结

Object类是Java类层次结构中的根类,所有的类都继承自Object类。它提供了一些通用的方法,用于处理对象的创建、比较、克隆、