정리
- if / if - else / if - else if - else 모두 Java와 문법이 동일하다.
→ 단, Kotlin에서는 Expression으로 취급된다.
→ 때문에 Kotiln에서는 삼항연산자가 없다
- Java의 switch는 Kotlin에서 when으로 대체되었고, when은 더 많은 기능을 갖는다
if문 + Expression과 Statement
단순 if문의 경우 Java 다르지 않다
if (조건) { }
if - else문의 경우에는?
fun getPassOrFail(score: Int): String {
if(score >= 50) {
return "P"
} else {
return "F"
}
}
내용 자체에는 차이점이 없지만,
Java에서 if - else는 Statement지만, Kotlin에서는 Expression이다.
- Statemnet: 프로그램의 문장. 하나의 값으로 도출되지 않음
- Expression: 하나의 값으로 도출되는 문장

따라서 Java에서는 위와 같이 쓰게 되면, if문을 하나의 값으로 취급하지 않으니 에러가 발생한다.
이를 위해 Java에서는 삼항연산자를 제공한다.

삼항연산자는 하나의 값으로 취급하므로 에러가 발생하지 않는다.
즉, Expression이면서 Statement이다.
Kotlin에서는 위에 작성한 로직을 아래 처럼 표현할 수 있다.
fun getPassOrFail(score: Int): String {
return if(score >= 50) {
"P"
} else {
"F"
}
}
물론 if - else if - esle 문법도 동일하다
💡어떠한 값이 특정 범휘에 포함되어 있는지, 포함되어 있지 않은지를 확인할 때
| Java | Kotlin | |
| if (0 <= score && score <= 100) { } | → | if (score in 0..100) { } |
switch와 when
Kotlin에서는 swith문이 사라지고 when문이 새로 생겼다
fun getGradeWithSwitch(score: Int): String {
return when (score / 10){
9 -> "A"
8 -> "B"
7 -> "C"
else -> "D"
}
}
코틀린에서는 다양한 조건을 갖고 분기처리를 할 수 있다.
fun getGradeWithSwitch(score: Int): String {
return when (score){
in 90..99 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "D"
}
}
fun startWithA(obj: Any) Boolean {
return when (obj) {
is String -> obj.startsWith("A")
else -> false
}
}
fun judgeNumer(number: Int) {
when (number) {
1, 0, -1 -> println("어디서 많이 본 숫자인데..")
else -> println("1, 0, -1이 아닙니다")
}
}
값 자체가 없을 수도 있다(early return처럼 동작)
fun judgeNumber2(number: Int) {
when {
number == 0 -> println("주어진 숫자는 0입니다")
number %2 == 0 -> println("주어진 숫자는 짝수입니다")
else -> println("주어지는 숫자는 홀수입니다")
}
}
when은 Enum class 또는 Sealed class와 함께 사용 할 경우, 모든 경우를 빠짐없이 처리했는지 컴파일러가 검사해주기 때문에 더 효과적이다
'지식을 쌓아보자 > Kotlin' 카테고리의 다른 글
| [기초] 코틀린에서 예외를 다루는 방법 (0) | 2025.12.14 |
|---|---|
| [기초] 코틀린에서 반복문을 다루는 방법 (0) | 2025.12.14 |
| [기초] 코틀린에서 연산자를 다루는 방법 (0) | 2025.12.14 |
| [기초] 코틀린에서 Type을 다루는 방법 (0) | 2025.12.11 |
| [기초] 코틀린에서 null을 다루는 방법 (0) | 2025.12.10 |