코틀린 조건문 정리 — if와 when으로 흐름 제어

코틀린 조건문의 특징

코틀린의 가장 큰 특징은 조건문이 ‘표현식(Expression)’으로 동작한다는 점이다.
즉, 단순히 코드를 분기시키는 것뿐 아니라 값을 반환하는 기능도 수행한다.
이 덕분에 코틀린에서는 삼항 연산자(?:)가 필요 없다.


1. if문 — 가장 기본적인 조건문

if문은 조건식이 참이면 특정 코드를 실행하고, 거짓이면 다른 코드를 실행한다.
문법 자체는 자바와 유사하지만, 코틀린에서는 표현식으로도 활용 가능하다.

val a = 10
val b = 20

if (a > b) {
    println("a가 더 큽니다.")
} else {
    println("b가 더 큽니다.")
}

if문을 값으로 사용하는 방법

if문이 값을 반환하기 때문에 변수에 직접 대입할 수 있다.

val max = if (a > b) a else b
println("최댓값: $max")

이러한 구조 덕분에 자바에서의 max = (a > b) ? a : b; 구문이 불필요하다.
즉, 삼항 연산자를 대체하는 표현식형 if문을 사용할 수 있다.


2. else if문 — 다중 조건 처리

else if문은 여러 조건을 순차적으로 검사하고, 첫 번째로 참이 되는 조건을 실행한다.
코틀린에서도 자바와 동일하게 사용할 수 있지만, when문으로 대체하면 가독성이 좋아진다.

val score = 85

if (score >= 90) {
    println("A 등급")
} else if (score >= 80) {
    println("B 등급")
} else if (score >= 70) {
    println("C 등급")
} else {
    println("D 등급")
}

이러한 다중 조건은 when을 사용하면 더욱 깔끔하게 표현할 수 있다.
다음 절에서 자세히 알아보자.


3. if문 한 줄 표현식 — 간결한 조건문 작성

조건이 간단하다면 중괄호 {}를 생략해 한 줄로 작성할 수 있다.

if (a > b) println("a가 더 큽니다.")
else println("b가 더 큽니다.")

이런 형태는 간단한 분기 처리에서 매우 유용하다.
하지만 로직이 길거나 중첩되는 경우에는 반드시 중괄호를 사용하는 것이 좋다.
가독성과 유지보수를 고려하면 한 줄 표현식은 신중히 써야 한다.


4. when문 — switch를 대체하는 강력한 구문

when은 코틀린의 대표적인 다중 분기문으로, 자바의 switch를 완벽히 대체한다.
더 나아가 switch보다 훨씬 유연한 조건 처리가 가능하다.

val day = 3

when (day) {
    1 -> println("월요일")
    2 -> println("화요일")
    3 -> println("수요일")
    else -> println("기타 요일")
}

when문을 표현식으로 사용하기

when 또한 표현식으로 사용할 수 있다.
즉, 특정 조건에 맞는 값을 반환하도록 만들 수 있다.

val result = when (day) {
    1 -> "월요일"
    2 -> "화요일"
    3 -> "수요일"
    else -> "기타 요일"
}
println(result)

5. when문에서 조건식 사용하기

when은 단순히 값 비교뿐 아니라, 논리식 자체를 조건으로 평가할 수도 있다.
이 방식은 if-else 연속문을 훨씬 깔끔하게 대체한다.

val num = -5

when {
    num > 0 -> println("양수")
    num == 0 -> println("0")
    else -> println("음수")
}

when 괄호 안을 비워두면, 각 조건식이 직접 평가되어 첫 번째로 참이 되는 분기가 실행된다.


6. 여러 조건을 동시에 비교하기

콤마(,)를 사용하면 여러 값을 한 번에 비교할 수 있다.
이 기능은 코드의 간결함을 극대화한다.

val ch = 'A'

when (ch) {
    'A', 'E', 'I', 'O', 'U' -> println("모음입니다.")
    else -> println("자음입니다.")
}

7. 범위(Range)와 타입 검사 — 코틀린다운 조건문

코틀린의 when은 범위와 타입을 직접 검사할 수 있다.
이는 자바보다 훨씬 직관적인 방식이다.

val score = 92

when (score) {
    in 90..100 -> println("A 등급")
    in 80..89 -> println("B 등급")
    else -> println("C 이하")
}

val value: Any = "Hello"

when (value) {
    is String -> println("문자열입니다.")
    is Int -> println("정수입니다.")
}

이처럼 in, is 키워드를 활용하면 코드의 가독성과 표현력이 극대화된다.


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다