Comparison and Equality

Comparison Operators

Example

Comparisons return a Boolean. They work on numbers, characters and strings.

fun main() {
    val age = 20
    println(age > 18)
    println(age < 18)
    println(age >= 20)
    println(age <= 19)
    println(age == 20)
    println(age != 20)
    println("Apple" < "Mango")
    println('a' < 'b')
}

Output

true
false
true
false
true
false
true
true

== vs ===

== checks structural equality (same content; it calls equals()). === checks referential equality (exactly the same object in memory).

Example

Two different string objects with the same text:

fun main() {
    val a = "Kotlin"
    val b = StringBuilder("Kot").append("lin").toString()   // built at run time
    println(a == b)    // same content
    println(a === b)   // different objects
    val c = a
    println(a === c)   // same object
}

Output

true
false
true
JavaKotlin
Same contenta.equals(b)a == b (null-safe)
Same objecta == ba === b