Object类之equals方法

equals方法

java对象中的equals方法的设计目的:判断两个对象是否一样。

Java源码里面Object中的equals方法:


publicbooleanequals(Object obj){

        return (this == obj);

    }


== 两边如果是引用类型,则比较内存地址,地址相同则是true,反之则false.

Object中的equals方法比较的是两个引用的内存地址。但是在现实的业务逻辑当中,不应该比较内存地址,应该比较地址里面的内容,所以需要对equals方法进行重写。

注意:在使用自己创建的类进行equals比较时,一定要先重写equals方法

创建一个Star类

classStar{

    //身份证号    int id;

    //姓名    String name;

    publicStar(intid,String name){

        this.id = id;

        this.name = name;

    }

    //根据需求规定重写equals方法    //s1.equals(s2);    publicbooleanequals(Object obj){

        if(this==obj){

            return true;

        }

        if(obj instanceof Star){

            Star s = (Star)obj;

            if(s.id == id && s.name.equals(name)){

                return true;

            }

        }

        return false;

    }

}


创建一个测试类:

public class Test01{

    publicstaticvoidmain(String[] args){

        Object o1 = new Object();

        Object o2 = new Object();

        boolean b1 = o1.equals(o2);

        System.out.println(b1); //false        Star s1 = new Star(100,"成龙");

        Star s2 = new Star(100,"成龙");

        Star s3 = new Star(110,"李连杰");

        System.out.println(s1.equals(s2)); //true        System.out.println(s2.equals(s3)); //false    }

}

比较两个String类型时,不能使用==,要使用equals方法,String已经重写了Object中的equals方法,比较的是内容。

public class Test02{

    publicstaticvoidmain(String[] args){

        String s1 = new String("ABC");

        String s2 = new String("ABC");

        System.out.println(s1==s2); //false        //String已经重写了Object中的equals方法,比较的是内容。        System.out.println(s1.equals(s2)); //true    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容