zoukankan      html  css  js  c++  java
  • 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方法可以返回对象的具体内容。

  • 相关阅读:
    Java DB 访问(三)mybatis mapper interface接口
    android stdio 安装后gradle 编译失败,设置代理不管用
    超星自动签到并邮件通知
    关于解决Mac使用docker安装SQL server for Linux 中文乱码问题
    Bom简单介绍
    grid-layout
    Position
    前端学习(注册表)
    关于学精通一门语言的个人看法(欢迎留言补充)
    Google 最新推出数据集搜索
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11348408.html
Copyright © 2011-2022 走看看