📅  最后修改于: 2023-12-03 14:42:21.114000             🧑  作者: Mango
Java.lang.Object类是Java SE API提供的基础类之一,其他所有类都直接或间接地从Object类继承。这个类定义了所有对象都具有的通用方法,例如equals,hashCode,toString和getClass。Object类的方法可以被任何Java类的对象调用。
equals方法是java在判断两个对象是否相等时调用的方法。这个方法的默认实现是比较两个对象是否是同一个引用,如果是,则返回true,否则返回false。通常情况下,我们需要实现equals()方法以便能够判断两个对象是否相等。
public boolean equals(Object obj) {
return (this == obj);
}
hashCode方法返回对象的哈希码。哈希码是由Java虚拟机根据对象的地址或者内部状态计算出来的一个整数。hashCode方法的默认实现是返回对象的地址。通常情况下,我们需要实现hashCode方法以配合equals方法来判断两个对象是否相等。
public native int hashCode();
toString方法返回对象的字符串表示。这个方法的默认实现是返回对象的类名+“@”+hashCode的十六进制形式。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
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对象的字符串表示。