📅  最后修改于: 2023-12-03 15:16:32.506000             🧑  作者: Mango
在Java中,所有的类都是继承于根类Object。因此,Object类是Java中最基本的类之一,经常被用于泛型的声明,接口的实现,以及像常规等价性和哈希代码的操作等。
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;
}
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;
}
getClass 方法返回对象的运行时类。
public static void main(String[] args) {
Person person = new Person("张三", 20);
System.out.println(person.getClass().getName()); // Person
}
toString 方法返回对象的字符串表示形式。如果重写了 toString 方法,则可以按照自己的格式来返回字符串形式。
// 重写toString方法
@Override
public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
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 类经常被用于重写方法,以实现自己的业务逻辑,并可以让对象支持比较、哈希、克隆等操作。