조건문(conditional)이란, 어떤 조건이 주어질 때 주어진 조건의 만족 여부에 따라 선택적으로 실행하고자 할 때 사용되는 문장이다. 즉, 조건에 따라 코드의 흐름을 관리할 때 사용한다.
Kotlin에는 조건문으로 If문, When문이 존재한다.
🔹If문은 if 키워드와 (boolean 표현식)으로 나타낼 조건식, 중괄호로 나타낼 {본문}으로 사용할 수 있다.
// 하나의 문장
if(boolean 표현식) {
표현식이 true면 수행할 본문
} else {
표현식이 true가 아니면 수행할 본문
}
// else if 문 사용
if(boolean 표현식) {
표현식이 true면 수행할 본문
} else if(boolean 표현식) {
이전 표현식들이 false이고, 현재 표현식이 true이면 수행할 본문
} else {
모든 표현식이 false이면 수행할 본문
}
// else 생략
if(condition) {
condition이 true이면 수행
}
- if, else if, else를 모두 합쳐 하나의 문장으로 본다.
- else if들로 조건을 여러가지 설정할 수 있다.
- else는 생략이 가능하다.
else가 없으면 if문의 조건이 만족하지 않을 때, 아무것도 실행하지 않는다.
🔹if 문의 본문에 문장이 하나면 간략히 표현할 수 있다.
if(a>b) {
print("a > b")
} else {
print("a <= b ")
}
// 간략한 표현
if(a>b) print("a > b")
else print("a <= b")
// 한 줄 표현
if(a>b) print("a > b") else print("a <= b")
🔹if, else가 모두 있으면 표현식으로 사용할 수 있다.
// if문 마지막 표현식이 변수 result의 타입 Int와 같아야 함
val result: Int = if(a>b) {
print(a+b)
5
} else {
print(a-b)
7
}
// 변수 result의 타입이 정해져 있지 않을 시 다양한 타입 가능
val result = if(a>b) {
10
} else {
"문자열"
}
// 간략한 표현
val result: Int = if(a>b) 10 else 20
val result = if(a>b) 10 else 'c'
- 선언한 `변수의 타입`과 if문 본문들의 `마지막 표현식`이 같아야한다.
- 변수 선언 시 타입을 명시하지 않으면 if문 본문들에 제약이 없다.
- 만일 본문의 `마지막 표현식이 없거나 표현식이 아니면` Unit이 된다.
🔹When문은 when 키워드, (타깃 표현식)으로 사용할 수 있다.
// when (타깃 표현식)
when(num/10) {
3 -> {println("3")}
4 -> {println("4")}
5, 6, 7 -> {println("5 or 6 or 7")}
else -> {println("생략 가능")
}
// else 생략 // 여러 조건 표현 // 간략 표현
when(num) {
5 -> println("5")
6, 7, 8 -> println("6, 7, 8")
}
- else는 생략이 가능하다.
- ,로 여러 조건을 함께 쓸 수 있다.
- 수행할 문장이 하나면 간략히 표현이 가능하다.
🔹(타깃표현식) 대신 조건을 직접 설정할 수 있다.
when {
num/10 == 3 -> println("3")
num/5 >= 4 -> println("4 이상")
}
- 조건을 여러개 만족해도, 가장 처음 만족한 조건만 수행한다.
🔹else가 있다면 when 문을 표현식으로 쓸 수 있다.
// 타입 지정 시, 변수 타입 == when 표현식
val result : Int = when(num / 10) {
6 -> 6
7, 8 -> 7
else -> 10
}
// 타입 미지정 시
val result = when(num / 10) {
6 -> 6
7, 8 -> 'c'
else -> "만족하는 값이 없음"
}
- 조건을 여러개 만족해도, 가장 처음 만족한 조건만 수행한다.
- 변수 타입이 정해져 있다면, when의 본문 표현식이 변수 타입과 일치해야 한다.
변수 타입이 정해져있지 않으면, 다양한 값을 표현식에 쓸 수 있다.
https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%AC%B8
초보자를 위한 코틀린 200제(Kotlin) / 엄민석 / 정보문화사
수정 및 개선할 내용을 알려주시면 반영하겠습니다.
읽어주셔서 감사합니다, 좋은 하루 보내세요!