如何理解Java的equals()和 = =?

Posted L烧鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何理解Java的equals()和 = =?相关的知识,希望对你有一定的参考价值。

经过参考网上的资料以及自己的实践,有以下的总结

目录

目录

经过参考网上的资料以及自己的实践,有以下的总结

一、  = =

1、 如果= =两边都是对象,则用来判断两个对象的地址是否相同,即是否是指相同一个对象

1) String str = "lsy" 和 String str=new String ("lsy")

2、  如果= =的其中一边有基本类型,则是值的比较

二、 equals()

1、 equals用来比较的是两个对象的内容是否相等,无关地址 

1) Object的equals()默认比较的是地址,需要重写Object的equals(),但是String重写了



一、  = =

1、 如果= =两边都是对象,则用来判断两个对象的地址是否相同,即是否是指相同一个对象

1) String str = "lsy" 和 String str=new String ("lsy")

先在内存中找是不是有"lsy"这个对象,如果有,就让str指向那个"lsy"。内存里如果没有"lsy",就创建一个新的对象保存"lsy".。 

String str = new String ("lsy") 则不管内存里是不是已经有"lsy"这个对象,都新建一个对象保存"lsy",也就是和之前的String str = "lsy"没有关系了。

PS:

        String s1 = new String("lsy");
        String s2 = "lsy";
        String s3 = "lsy";
        System.out.println("s1==s3:" + (s1 == s3));
        System.out.println("s2==s3:" + (s2 == s3));

2、  如果= =的其中一边有基本类型,则是值的比较

        int s1 = 6;
        int s2 = 128;
        Integer s3 = 6;
        Integer s4 = new Integer(128);
        System.out.println("s1 == s3 :" + (s1 == s3));
        System.out.println("s2 == s4 :" + (s2 == s4));

二、 equals()

1、 equals用来比较的是两个对象的内容是否相等,无关地址 

1) Object的equals()默认比较的是地址,需要重写Object的equals(),但是String重写了

        String s1 = new String("lsy");
        String s3 = "lsy";
        System.out.println("s1 == s3 :" + (s1 == s3));
        System.out.println("s1.equals(s3) :" + (s1.equals(s3)));    

以上是关于如何理解Java的equals()和 = =?的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何判断两个对象是否相等(Java equals and ==)

Java中如何判断两个对象是否相等(Java equals and ==)

Java中如何判断两个对象是否相等(Java equals and ==)

Java Set集合通过重写hashCode和equals实现去重

如何重写Java中的equals方法

理解Java中的hashCode和equals 方法