코틀린을 배우기 위해서 인프런에서 강의를 구매하고 코틀린과 친해지고 기본기를 다지기 위해서 공부하는 중이다. 글 내용을 제어문을 다루는 방법이고 강의는 최태현님의 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)에 소금을 조금 친 내용이다
if문 – Expression vs Statement
Java vs Kotlin
// Java - Statement (값 반환 불가)
if (score >= 50) {
return "P";
} else {
return "F"
}
// Kotlin - Expression (값 반환 가능)
fun getPassOrFail(score: Int): String {
return if (score >= 50) "P" else "F"
}
Expression(표현식): 하나의 값으로 평가되는 코드
1 + 2 // 3으로 평가
"Hello" // "Hello"로 평가
if (a > b) a else b // 더 큰 값으로 평가
Statement(문장): 값을 반환하지 않고 작업을 수행하는 코드
val x = 5 // 변수 선언
println(x) // 출력 작업
범위 연산자와 in
// 범위 검증
fun validateScoreInRange(score: Int) {
if (score in 0..100) {
println("점수가 0부터 100사이에 있습니다")
}
}
funvalidateScoreNotInRange(score: Int) {
if (score !in 0..100) {
throw IllegalArgumentException("점수 범위는 0부터 100입니다")
}
}
when문 – swtich의 강력한 대안
// Java
private void judgeNumber(int number) {
if (number == 1 || number == 0 || number == -1) {
System.out.println("어디서 많이 본 숫자입니다");
} else {
System.out.println("1, 0, -1이 아닙니다");
}
}
private String getGradeWithSwitch(int score) {
return switch (score / 10) {
case 10, 9 -> "A";
case 8 -> "B";
case 7 -> "C";
case 6 -> "D";
default -> "F";
};
}
// Kotlin
// 값 매칭
fun judgeNumber(number: Int) {
when (number) {
1, 0, -1 -> println("어디서 많이 본 숫자입니다")
else -> println("1, 0, -1이 아닙니다")
}
}
// 범위 매칭
fun getGradeSwitch(score: Int): String {
return when (score) {
in 90..100 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
in 60..69 -> "D"
else -> "F"
}
}
조건 없는 when
// Java
private void judgeNumber(int number) {
if (number == 0) {
System.out.println("주어진 숫자는 0입니다");
return;
}
if (number % 2 == 0) {
System.out.println("주어진 숫자는 짝수입니다");
return;
}
System.out.println("주어진 숫자는 홀수입니다");
}
// Koltin
fun judgeNumber2(number: Int) {
when {
number == 0 -> println("주어진 숫자는 0입니다")
number % 2 == 0 -> println("주어진 숫자는 짝수입니다")
else -> println("주어진 숫자는 홀수입니다")
}
}
타입 체크 (is)
// Java
private boolean startsWithA(Object obj) {
if (obj instanceof String) {
return ((String) obj).startsWith("A");
} else {
return false;
}
}
// Koltin
fun startWithA(obj: Any): Boolean {
return when (obj) {
is String -> obj.startsWith("A")
else -> false
}
}
when문의 주요 특징
- Expression으로 사용 가능 – 값 반환
- break 불필요 – 자동으로 분기 종료
- 다양한 조건 지원
- 값: 1, 2, 3
- 범위: in 0..100
- 타입: is String
- 조건: number > 0
- 조건 없는 when은 when {} 형태로 사용하며, 각 분기에서 Boolean 조건을 직접 평가. 복잡한 if-else if 체인을 더 깔끔하게 표현할 수 있고 가독성이 향상된다
Kotlin의 제어문은 Expression 기반으로 더 간결하고 표현력이 뛰어나며, when문은 강력하고 유연하다
출처 – 인프런 강의 중 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)