Equality

Equality

In Kotlin there are two types of equality:

  • Referential equality (two references point to the same object)
  • Structural equality (a check for equals())

Referential equality

Referential equality is checked by the === operation (and its negated counterpart !==). a === b evaluates to true if and only if a and b point to the same object.

Structural equality

Structural equality is checked by the == operation (and its negated counterpart !=). By convention, an expression like a == b is translated to

a?.equals(b) ?: (b === null)

I.e. if a is not null, it calls the equals(Any?) function, otherwise (i.e. a is null) it checks that b is referentially equal to null.

Note that there's no point in optimizing your code when comparing to null explicitly: a == null will be automatically translated to a === null.

© 2010–2017 JetBrains s.r.o.
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/reference/equality.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部