더북(TheBook)

2.2.8 비교와 동등성

지금까지 언급한 모든 타입은 몇 가지 비교 연산을 제공한다. ==(같다), !=(같지 않다), <(~보다 작다), <=(~보다 작거나 같다), >(~보다 크다), >=(~보다 크거나 같다)가 비교 연산이다.

val a = 1
val b = 2
println(a == 1 || b != 1)   // true
println(a >= 1 && b < 3)    // true
println(a < 1 || b < 1)     // false
println(a > b)              // false

일반적으로 동등성 연산인 ==!=를 모든 타입의 값에 적용할 수 있다. 하지만 수 타입이나 CharBoolean의 경우 예외가 있다. 다음 코드를 보라.

val a = 1                  // Int
val b = 2L                 // Long
println(a == b)            // Error: comparing Int and Long
println(a.toLong() == b)   // Ok: 두 타입 모두 Long임

기본적으로 이런 코틀린 타입은 두 인자가 모두 같은 타입일 때만 ==!=를 허용한다. 예를 들어 한 인자가 Int이고 다른 인자가 Long이면 ==를 적용할 수 없다. 값이 박싱돼 있는지에 따라 동등성 연산이 다른 결과를 낳을 수 있는데, 코틀린에서는 박싱이 암시적으로 진행되기 때문에 (자바 원시 타입에 해당하는 박싱이 될 수 있는 코틀린) 타입 사이의 동등성 연산을 허용하면 혼란을 야기할 수 있기 때문이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.