📜  Java中的对象类Object(1)

📅  最后修改于: 2023-12-03 15:16:32.506000             🧑  作者: Mango

Java中的对象类Object

在Java中,所有的类都是继承于根类Object。因此,Object类是Java中最基本的类之一,经常被用于泛型的声明,接口的实现,以及像常规等价性和哈希代码的操作等。

Object类的常用方法
1. equals方法

equals方法用于判断两个对象是否相等。需要注意的是,在Java中,基本数据类型中的数值类型和字符类型是通过 == 进行比较的。而在引用类型中,需要重写 equals 方法。(注:Object类中的 equals 方法是比较两个对象的引用地址是否一致)

// 重写equals方法
@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }
    if (this.getClass() != obj.getClass()) {
        return false;
    }
    final Person person = (Person) obj;
    if (!this.name.equals(person.name)) {
        return false;
    }
    if (this.age != person.age) {
        return false;
    }
    return true;
}
2. hashCode方法

hashCode方法通常与 equals 方法一起使用,用于计算对象的哈希码。hashCode 方法必须保证当两个对象通过 equals 方法比较返回 true 时,它们的 hashCode 值相等。

// 重写hashCode方法
@Override
public int hashCode() {
    int result = 17;
    result = 31 * result + name.hashCode();
    result = 31 * result + age;
    return result;
}
3. getClass方法

getClass 方法返回对象的运行时类。

public static void main(String[] args) {
    Person person = new Person("张三", 20);
    System.out.println(person.getClass().getName()); // Person
}
4. toString方法

toString 方法返回对象的字符串表示形式。如果重写了 toString 方法,则可以按照自己的格式来返回字符串形式。

// 重写toString方法
@Override
public String toString() {
    return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
5. clone方法

clone 方法用于创建并返回对象的副本,即所谓的“克隆”。默认情况下,clone 方法是浅拷贝。如果要实现深拷贝,则可以通过重写 clone 方法来实现。

// 重写clone方法
@Override
public Object clone() throws CloneNotSupportedException {
    Person person = (Person) super.clone();
    person.name = new String(this.name);
    return person;
}
总结

Object 类是 Java 中最基本的类之一,是所有类的超类。它定义了 Java 对象的一些基本属性和方法,引用类型中的 equals、hashCode、toString、getClass 和 clone 方法都是在 Object 类中定义的。在实际开发中,Object 类经常被用于重写方法,以实现自己的业务逻辑,并可以让对象支持比较、哈希、克隆等操作。