불리언(Boolean)

불리언(Boolean)

Boolean 타입은 논리값, 즉 truefalse를 나타내요. 예/아니오를 묻는 함수에서나 while, if, when의 조건에서 이 값을 활용할 수 있습니다.

출처: Kotlin 공식 문서

본문

Boolean 변수 선언하기

Boolean 변수를 선언하려면 truefalse를 할당하면 돼요. 타입을 명시적으로 지정할 수도 있고, Kotlin이 값에서 알아서 추론하게 둘 수도 있습니다:

val isTrue: Boolean = true
val isFalse = false // Kotlin infers Boolean

값이 null이 될 수 있다면 Boolean?를 사용해요:

val isEnabled: Boolean? = null

Boolean 값 만들어내기

비교 표현식이나 함수로도 Boolean 값을 만들 수 있어요:

fun main() {
//sampleStart
    val number = 10
    val isPositive = number > 0 
    println(isPositive) // true

    val language = "Kotlin"
    val isEmpty = language.isEmpty() 
    println(isEmpty) // false
//sampleEnd
}

이 결과는 조건이나 다른 표현식에서도 그대로 쓸 수 있습니다:

fun main() {
//sampleStart
    val number = 10
    val isPositive = number > 0 // true

    if (isPositive) {
        println("The number is positive.")
    }
//sampleEnd    
}

Boolean 연산

Kotlin은 Boolean 값을 다루기 위한 연산자와 infix 함수를 제공해요. 이것들을 이용하면 Boolean 값을 뒤집거나, 여러 Boolean 값을 하나의 결과로 합칠 수 있습니다.

부정(NOT)

NOT 연산자는 Boolean 값을 뒤집어요. 사용할 때는 Boolean 값 앞에 ! 연산자를 붙이면 됩니다:

val isOn = true
val isOff = !isOn // isOff is false

논리곱(Logical AND)

AND 연산자는 두 피연산자가 모두 true일 때만 true를 반환해요. 논리곱을 쓰려면 피연산자 사이에 && 연산자를 두면 됩니다:

val a = false && false // false
val b = false && true // false
val c = true && false // false
val d = true && true  // true

논리합(Logical OR)

OR 연산자는 피연산자 중 하나라도 truetrue를 반환해요. 논리합은 피연산자 사이에 || 연산자를 두면 되고요:

val a = false || false // false
val b = false || true  // true
val c = true || false  // true
val d = true || true   // true

배타적 논리합(XOR)

배타적 논리합(XOR)은 피연산자의 값이 서로 다를 때 true를 반환해요. XOR을 쓰려면 피연산자 사이에 xor을 적습니다:

val a = false xor false // false
val b = false xor true  // true
val c = true xor false  // true
val d = true xor true   // false

연산자 우선순위

하나의 표현식에 논리 연산이 여럿 들어있는데 계산 순서를 정할 괄호가 없다면, Kotlin은 우선순위 규칙을 적용해요. 우선순위가 높은 연산을 낮은 연산보다 먼저 계산하죠. 이번 섹션에서 다룬 Boolean 연산은 다음과 같은 순서로 우선순위를 가져요:

  1. !
  2. xor (그리고 그 밖의 infix 함수)
  3. &&
  4. ||

아래 예시에서 컴파일러는 ||보다 &&를 먼저 계산해요:

fun main() {
//sampleStart
    val result = true || false && false
    println(result) // true
//sampleEnd    
}

계산 순서를 명확히 하고 싶다면 괄호를 사용하세요:

fun main() {
//sampleStart
    val result = (true || false) && false
    println(result) // false
//sampleEnd    
}

조건에서의 Boolean

if, when, whileBoolean 표현식을 평가해서 프로그램의 흐름을 결정해요.

if 표현식

fun main() {
//sampleStart
    val number = 4
    val isEven = number % 2 == 0

    // Condition already has the `Boolean` type
    // You do not need to compare it to `true` or `false`
    if (isEven) { 
        println("The number is even.")
    } else {
        println("The number is odd.")
    }
//sampleEnd    
}

when 표현식

fun main() {
//sampleStart
    val number = 3

    when {
        number > 0 -> println("The number is positive.")
        number < 0 -> println("The number is negative.")
        else -> println("The number is zero.")
    }
//sampleEnd    
}

while 루프

fun main() {
//sampleStart
    var isCalculating = true
    
    while (isCalculating) {
        println("Calculating...")
        isCalculating = false
    }
//sampleEnd    
}

더 알아보기