02.Object的equals方法

作者: 今天庹 | 来源:发表于2018-10-11 19:57 被阅读0次

    equals()方法

    方法摘要

    equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。
    在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。

    package com.itheima_01;
    
    import java.util.ArrayList;
    
    /*
     *  boolean equals(Object o)
     *      使用==来比较两个对象是否相等,基本数据类型比值,引用数据类型则比较地址值是否相等
     */
    public class ObjectDemo2 {
        public static void main(String[] args) {
            Person p = new Person("zhangsan",18);
            Person p2 = new Person("zhangsan",19);
            
    //      boolean flag = p.equals(p2);
            
            boolean flag = p.equals(new ArrayList<>());
            System.out.println(flag);
        }
    }
    
    class Person {
        String name;
        int age;
        
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
    
        @Override
        public boolean equals(Object obj) {
            //提高效率
            if (this == obj)
                return true;
            
            if (obj == null)
                return false;
            //提高健壮性
            if (getClass() != obj.getClass())
                return false;
            
            //向下转型
            Person other = (Person) obj;
            
            if (age != other.age)
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }
        
        /*@Override
        public boolean equals(Object o) {
            //提高效率 当前对象和传递进来的对象一样则不用比较成员
            if(this == o) {
                return true;
            }
            
            //提高代码的健壮性
            if(this.getClass() != o.getClass()) {
                return false;
            }
            
            //向下转型
            Person other = (Person) o;
            
            if(!this.name.equals(other.name)) {
                return false;
            }
            
            if(this.age != other.age) {
                return false;
            }
            return true;
        }*/
        
        
    }
    

    相关文章

      网友评论

        本文标题:02.Object的equals方法

        本文链接:https://www.haomeiwen.com/subject/vdypaftx.html