[Kotlin] 조건문 - if, when

MyPL·2023년 8월 21일

조건문이란?

조건문(conditional)이란, 어떤 조건이 주어질 때 주어진 조건의 만족 여부에 따라 선택적으로 실행하고자 할 때 사용되는 문장이다. 즉, 조건에 따라 코드의 흐름을 관리할 때 사용한다.
Kotlin에는 조건문으로 If문, When문이 존재한다.

If 문

🔹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 (타깃 표현식)
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의 본문 표현식이 변수 타입과 일치해야 한다.
 변수 타입이 정해져있지 않으면, 다양한 값을 표현식에 쓸 수 있다. 

Reference

https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%AC%B8
초보자를 위한 코틀린 200제(Kotlin) / 엄민석 / 정보문화사

수정 및 개선할 내용을 알려주시면 반영하겠습니다.
읽어주셔서 감사합니다, 좋은 하루 보내세요!

profile
Android 개발자

0개의 댓글