코틀린 조건문의 특징
코틀린의 가장 큰 특징은 조건문이 ‘표현식(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 키워드를 활용하면 코드의 가독성과 표현력이 극대화된다.
답글 남기기