• Object类(重写equals、toString方法)


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

    1、equals方法

    (1)重写equals方法之前

    该方法是对两个对象的内存地址的比较,无实际意义。因此,需要子类重写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));
        }
    
    }

     2、toString方法:

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

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

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

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

    (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());
        }
    
    }

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

  • 相关阅读:
    ngx-push-stream模块源码学习(四)——订阅
    nginx-push-stream模块源码学习(三)——发布
    nginx-push-stream模块源码学习(二)——模块初始化
    ngx-push-stream模块源码学习(一)——序言
    微信通过网页版定时推送消息脚本
    移动硬盘 或硬盘显示需先格式化问题解决
    SQL优化方法:
    sqlserver 电脑重启以后服务突然无法启动 报错
    sql server xp_cmdshell 过程中报错原因
    .net Core 2.0应用程序发布到IIS上注意事项
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11348408.html
Copyright © 2020-2023  润新知