Kotlin 中 equals() 和 == 比较

java 代码中

1、==用于比较两个引用是否指向同一个对象   equals用于比较两个对象是否相等(通常字符串比较)

2、由于字符串特殊 在字符串常量池中的字符串可以使用==也可以使用equals 推荐不管哪种方式 只要是比较字符串就用equals

详解如下

https://www.cnblogs.com/guoyafenghome/p/8542097.html

kotlin中

Kotlin 中的 == 等同于调用 equals() 函数 (kotlin中使用== kotlin代码中 kotlin.jvm.internal.Intrinsics.java已经自行进行了空的判断 )

但是比较两个对象引用是否相等要用 === 操作符

但这么说其实不准确,Kotlin 并不会直接把 == 编译为调用 equals() 函数,而是用 kotlin.jvm.internal.Intrinsics.java 的 areEqual() 方法包装一下,这个方法有多个重载形式,我们看一下最通用的一个:

public static boolean areEqual(Object first, Object second) {
  return first == null ? second == null : first.equals(second);
}

这就保证了空安全。所以说,我们用 == 操作符时不需要担心空安全,a == b 并不等同于 a.equals(b),而是 a?.equals(b) ?: b == null

详解

https://zhuanlan.zhihu.com/p/27214002

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值