栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

== 和 equals()的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

== 和 equals()的区别

==:        

        判断两个对象是否相等。

        对于基本数据类型,比较的是值是否相等;

        对于引用类型,比较的是内存地址是否相同;

equals():

        他的作用也是判断两个对象是否相等,在没有被重写的情况下,equals等效于"=="。

        注*:equals()属于Object类

举个栗子:
public class Test{
    public static void main(String[] args){
        String a = new String("奥里给!");
        String b = new String("奥里给!");  
        System.out.println(a == b);
        System.out.println(a.equals(b));
    }
}

看看结果:

有的小伙伴可能就会问了,卧槽,你不是说两个等效的吗,为什么返回结果不一样???

解析:

这里a和b都是String类型,引用类型比较的是内存地址,new关键字使用后其实是在堆中创建了两个"奥里给!"对象,所以他们的内存地址是不同的,这个时候使用"=="判断会返回false。

而这里的equals()方法则是在String类中被重写过后的方法,感兴趣的小伙伴可以自行看看源码,大概说起来是这样:方法内部会先使用"=="进行判断,如果返回为false,会将两个字符串的长度进行比较,如果长度相同则会将两个字符串放入两个char[]数组进行数组每一位的比较。(可以理解为先进行"=="判断,如果返回false则进行值的比较),所以使用equals返回为true。

再举个栗子:
public class Test{
    public static void main(String[] args){
        String aa = "奥里给!";
        String bb = "奥里给!";
        System.out.println(aa == bb);
        System.out.println(aa.equals(bb));
    }
}

看看结果:

 解析:

这里没有使用new关键字,再创建aa对象时,JVM会在常量池中先寻找是否有相同值,如果没有就 新建一个,如果有就把他赋给当前对象引用。也就是说在这里aa和bb其实引用的是同一个常量,所以这里两个返回都为true。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号