본문 바로가기

Kotlin

공식 문서로 배우는 Kotlin - 6. Basic Types - Booleans

여섯 번째, 이러한 동작은 효율성을 위해 어떻게 보면 당연한 얘기이고 많은 프로그래밍 언어들이 이렇게 동작합니다만, Kotlin이 이렇게 동작한다는 것을 꼭 기억해 둬야 합니다. 프로그래밍 언어를 이해할 때 정확한 동작 방식을 이해하고 있어야 코딩할 때 정확하고 효율적인 코드를 작성할 수 있습니다.

JVM에서 널 가능한 Boolean은 숫자 타입들과 마찬가지로 래퍼 클래스(java.lang.Boolean) 객체로 박스화(box)됩니다.  타입입니다.

 

Boolean 타입은 true와 false 둘 중 하나의 진리값을 갖는 객체를 나타냅니다. 널 가능한 형태는 Boolean? 입니다.

JVM에서 Boolean 타입은 전형적으로 8bit를 사용하는 boolean 원시 타입에 저장됩니다. 

 

불리언 타입에 대한 내장된 연산자는 다음과 같습니다.

  • ||  - 논리적 OR
  • && - 논리적 AND
  • ! - 부정. 논리적 NOT

예시

fun main() {
    val myTrue: Boolean = true
    val myFalse: Boolean = false
    val boolNull: Boolean? = null

    println(myTrue || myFalse)
    // true
    println(myTrue && myFalse)
    // false
    println(!myTrue)
    // false
    println(boolNull)
    // null
}

 

||&& 연산자는 다음과 같게 게으르게(lazy) 동작합니다.

  • 첫 번째 피연산자가 참(true)인 경우, || 는 두 번째 연산자를 판단(evaluate)하지 않습니다.
  • 첫 번째 피연산자가 거짓(true)인 경우, && 두 번째 연산자를 판단하지 않습니다.

이러한 동작은 효율성을 위해 어떻게 보면 당연한 얘기이고 많은 프로그래밍 언어들이 이렇게 동작합니다만, Kotlin이 이렇게 동작한다는 것을 꼭 기억해 둬야 합니다. 프로그래밍 언어를 이해할 때 정확한 동작 방식을 이해하고 있어야 코딩할 때 정확하고 효율적인 코드를 작성할 수 있습니다.

JVM에서 널 가능한 Boolean은 숫자 타입들과 마찬가지로 래퍼 클래스(java.lang.Boolean) 객체로 박스화(box)됩니다.