Java Object 类的常见⽅法有哪些?

举报
wljslmz 发表于 2023/03/31 17:28:59 2023/03/31
【摘要】 Object 是 Java 中的基类,几乎所有的 Java 类都直接或间接地继承自 Object。因此,Object 类中的方法是 Java 中最常用的方法之一,本文将介绍 Object 类的常见方法及其作用。 1、equals()equals() 方法用于比较两个对象是否相等。在 Object 类中,equals() 方法实现的是对象的引用比较,即判断两个对象是否指向同一个内存地址。但在大...

Object 是 Java 中的基类,几乎所有的 Java 类都直接或间接地继承自 Object。因此,Object 类中的方法是 Java 中最常用的方法之一,本文将介绍 Object 类的常见方法及其作用。

1、equals()

equals() 方法用于比较两个对象是否相等。在 Object 类中,equals() 方法实现的是对象的引用比较,即判断两个对象是否指向同一个内存地址。但在大多数情况下,我们需要对对象的属性进行比较,因此,我们需要重写 equals() 方法。

例如,我们定义了一个 Person 类,它包含姓名和年龄两个属性,我们需要重写 equals() 方法,以便在比较两个 Person 对象时,只要姓名和年龄相同,就认为这两个对象相等。代码如下:

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

    public boolean equals(Object obj) {
        if (obj instanceof Person) {
            Person p = (Person) obj;
            return this.name.equals(p.name) && this.age == p.age;
        }
        return false;
    }
}

2、hashCode()

hashCode() 方法返回对象的哈希码,用于散列表等数据结构中。在 Object 类中,hashCode() 方法返回的是对象的内存地址,即默认情况下,相同对象的 hashCode() 方法返回值是不相同的。因此,我们需要重写 hashCode() 方法,使其返回对象的属性的哈希值,以便在散列表等数据结构中能够正确地查找和比较对象。

例如,我们继续以 Person 类为例,重写 hashCode() 方法如下:

public int hashCode() {
    int result = 17;
    result = 31 * result + name.hashCode();
    result = 31 * result + age;
    return result;
}

3、toString()

toString() 方法用于返回对象的字符串表示。在 Object 类中,toString() 方法返回的是对象的类名和内存地址的字符串表示。因此,我们也需要重写 toString() 方法,使其返回对象的属性的字符串表示。

例如,我们继续以 Person 类为例,重写 toString() 方法如下:

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

4、clone()

clone() 方法用于复制对象。在 Object 类中,clone() 方法只能复制基本类型的属性,而无法复制引用类型的属性。因此,我们需要重写 clone() 方法,并实现深拷贝。

例如,我们定义了一个 Student 类,它包含姓名、年龄和课程三个属性,其中课程是一个引用类型的属性,我们需要重写 clone() 方法,实现对课程属性的深拷贝。代码如下:

public class Student implements Cloneable {
    private String name;
    private int age;
    private Course course;

    public Object clone() throws CloneNotSupportedException {
        Student s = (Student) super.clone();
        s.course = (Course) course.clone();
        return s;
    }
}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。