Operators: Equality, Inequality, and Comparison

Explore structural and referential equality and understand the use of comparison operators.

The equality and inequality operators

In Kotlin, there are two types of equality:

  • Structural equality: It is checked with the equals method or the == operator (and its negated counterpart !=).

    • The statemenet a == b translates to a.equals(b) when a is not nullable. Otherwise, it translates to a?.equals(b) ?: (b === null).

    • Structural equality is generally preferred over referential equality.

    • The equals method can be overridden in a custom class.

  • Referential equality: It is checked with the === operator (and its negated counterpart !==).

    • It returns true when both sides point to the same object.

    • The === and !== operators (identity checks) are not overloadable.

Get hands-on with 1400+ tech skills courses.