首页 > 综合 >

环球微资讯!Kotlin学习之==、equals、===三者的区别与联系

来源:哔哩哔哩 发布日期: 2023-02-05 17:51:35

背景

在代码中,我们经常需要判断两个变量是否相等,这里相等一般有两种含义,一种是判断两者是否指向同一个对象引用,另一种是判断两者属性是否相同。


(相关资料图)

学过Java的同学应该知道,在Java中判断是否指向同一个引用使用的是 ==,而判断属性是否相同,需要通过equals()方法来比较,并且此时就需要重写equals()方法(一般需要同时重写hashCod()e方法)。

但是在Kotlin中==的底层也是调用equals()方法,因此两者是等价的。=== 又是什么?

测试

Kotlin中==的底层也是调用equals()方法,可以通过以下代码来验证。

根据以上代码的验证结果可知,重写equals方法后,两个不同对象(属性相同),使用 == 运算,结果也为 true,因此 == 和 equals() 是等价的。

那么在Kotlin中难道就没有明确比较两个变量所指向的对象引用是否相同的方式了吗?答案是有的,就是使用 === ,通过以下代码可以验证。

结论        

至此,==、equals()和===三者的关系就已经搞清楚了。

Kotlin中,== 和 equals()等价,== 的底层实际就是调用的equals(),默认是比较的两个变量所指向的对象引用是否相同,可以通过重写equals()方法(同时重写hashCode()方法),修改为比较属性值。

=== 用于检查两个变量是否引用相同的底层对象,无论对象是什么类型。

如果有哪里没讲明白或讲的不对的地方,还请各位大佬评论区告诉我,一起交流学习。

下期预告:从本期内容可知,如果比较对象时,我们想要比较的是属性值是否相同,而不是对象的引用是否相同,此时我们就需要重写equals()方法(同时重写hashcode()方法)。在Java中我们只能这么做,但在Kotlin中,它为我们提供了更加简便的实现方式,那就是使用data修饰类,使其作为数据类,具体使用方式见下一期(点个关注,更新提醒,哈哈)。

关键词: 是否相同 对象引用 应该知道

Copyright   2015-2022 太平洋供销网  版权所有  备案号: 豫ICP备2022016495号-17   联系邮箱:93 96 74 66 9@qq.com