📜  Java.lang.Object类(1)

📅  最后修改于: 2023-12-03 14:42:21.114000             🧑  作者: Mango

Java.lang.Object类介绍

Java.lang.Object类是Java SE API提供的基础类之一,其他所有类都直接或间接地从Object类继承。这个类定义了所有对象都具有的通用方法,例如equals,hashCode,toString和getClass。Object类的方法可以被任何Java类的对象调用。

常用方法
1. equals()

equals方法是java在判断两个对象是否相等时调用的方法。这个方法的默认实现是比较两个对象是否是同一个引用,如果是,则返回true,否则返回false。通常情况下,我们需要实现equals()方法以便能够判断两个对象是否相等。

public boolean equals(Object obj) {
    return (this == obj);
}
2. hashCode()

hashCode方法返回对象的哈希码。哈希码是由Java虚拟机根据对象的地址或者内部状态计算出来的一个整数。hashCode方法的默认实现是返回对象的地址。通常情况下,我们需要实现hashCode方法以配合equals方法来判断两个对象是否相等。

public native int hashCode();
3. toString()

toString方法返回对象的字符串表示。这个方法的默认实现是返回对象的类名+“@”+hashCode的十六进制形式。

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
4. getClass()

getClass方法返回对象的类。如果一个对象不是null,那么它一定属于某个类的实例。通常情况下,这个方法被用于获取运行时对象的类。

public final native Class<?> getClass();
示例

下面是一个简单的示例演示了如何创建一个自定义类并实现Object类的通用方法。

public class Person {
    private String name;
    private int age;
 
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    //equals方法的实现
    @Override
    public boolean equals(Object obj) {
        if(obj == null) return false;
        if(obj == this) return true;
        if(getClass() != obj.getClass()) return false;
        Person person = (Person) obj;
        return (this.name.equals(person.name) && this.age == person.age);
    }
 
    //hashCode方法的实现
    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + name.hashCode();
        result = 31 * result + age;
        return result;
    }
 
    //toString方法的实现
    @Override
    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }
 
    //其他方法
}

在上面的示例中,我们实现了equals,hashCode和toString方法。构造函数和其他自定义方法省略。通过实现这些方法,我们可以来判断两个Person对象是否相等,可以根据Person对象生成哈希码,也可以打印Person对象的字符串表示。