더북(TheBook)

하지만 모든 수 타입의 값은 서로 <, <=, >, >=를 사용해 비교할 수 있다. 이는 수 타입 사이의 산술 연산이 가능한 모든 경우를 다룰 수 있도록 오버로딩(overloading)된 것과 마찬가지다. 따라서 다음과 같은 코드를 작성할 수 있다.4

1 <= 2L || 3 > 4.5

CharBoolean 값도 비교 연산을 지원한다. 하지만 같은 타입의 값과만 비교할 수 있다.

false == true // false
false < true  // true
false > 1     // Error: comparing Boolean and Int
'a' < 'b'     // true
'a' > 0       // Error: comparing Int and Char

falsetrue보다 작다고 가정하고, Char는 문자의 코드 값에 따라 비교된다는 점을 기억하라.

자바 vs. 코틀린 자바에서는 박싱된 값과 언박싱된 값이 서로 다른 타입으로 표현됐고( longLong), 원시 타입의 값을(char도 포함) 자유롭게 서로 ==, !=<, <=, >, >=로 비교할 수 있었다. 하지만 자바의 불 값은 순서(대소관계)가 없기 때문에 두 불 값에 대해서는 동등성 비교만 적용할 수 있다.

부동소수점 타입 비교 연산은 IEEE 754 표준을 따른다. 특히 이 표준은 NaN 값을 특별히 취급한다.

println(Double.NaN == Double.NaN)              // false
println(Double.NaN != Double.NaN)              // true
println(Double.NaN <= Double.NaN)              // false
println(Double.NaN < Double.POSITIVE_INFINITY) // false
println(Double.NaN > Double.NEGATIVE_INFINITY) // false
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.