专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Object类(重写equals、toString方法)

Object类:是所有类的父类,即直接或间接的继承java.lang.Object类。所有的类都继承自Object类,省略了extends Object关键字。

1、equals方法

(1)重写equals方法之前

35_1.png

该方法是对两个对象的内存地址的比较,无实际意义。因此,需要子类重写equals方法。

(2)equals方法的重写

重写equals方法,用于比较两个对象的值是否相等:

定义Person类,包含两个属性:

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age >= 0 || age <= 200)
            this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public boolean equals(Object obj) {
        // 判断当前对象和传递的对象
        if (this == obj) {
            return true;
        }
        // 判断传递进来的对象是否是Person类型
        if (!(obj instanceof Person)) {
            return false;
        }
        // 将obj向下转型为Perosn引用,可以访问Person特有内容,否则只能访问共有内容
        Person p = (Person) obj;
        return this.age == p.age && this.name == p.name;
    }
}

测试类:

public class EqualsDemo {
    public static void main(String[] args) {
        Person p1 = new Person(12, "赵文");
        Person p2 = new Person(12, "赵文");
        System.out.println(p1.equals(p2));
        Person p3 = new Person(12, "赵文");
        Person p4 = new Person(13, "赵文");
        System.out.println(p3.equals(p4));
    }

}

35_2.png

2、toString方法:

(1)未重写toString方法之前:

35_3.png

public class EqualsDemo {
    public static void main(String[] args) {
        Person p1 = new Person(12, "赵文");
        System.out.println(p1.toString());
    }

}

如果不重写toString方法,运行结果如下:

35_4.png

即:返回对象的内存地址,没有实际意义。

(2)重写toString方法:

创建Person类:

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age >= 0 || age <= 200)
            this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

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

创建测试类:

public class EqualsDemo {
    public static void main(String[] args) {
        Person p1 = new Person(12, "赵文");
        System.out.println(p1.toString());
    }

}

35_5.png

重写后toString方法可以返回对象的具体内容。

文章永久链接:https://tech.souyunku.com/22666

未经允许不得转载:搜云库技术团队 » Object类(重写equals、toString方法)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们