[Android] 3(3). 코틀린 기본 문법(조건문)

2 minute read

조건문

코틀린의 조건문에는 if와 when이 있습니다.


1. 조건문 if


특정 코드를 실행하거나 실행하지 않을 때에 조건문을 사용합니다.


if 문을 사용하기 위한 조건

if 문의 조건식에는 비교 연산자(==, <. > 등)와 논리 연산자(&&,   )를 사용한 조건식만 사용 가능하며, 조건식의 결과는 Boolean 타입인 true (참)와 false(거짓)로 나타납니다.


if 문의 구조

if(조건식1){
	조건식1 참일 경우 실행되는 코드 영역
}
else if(조건식2){
	조건식1 결과가 거짓이고, 조건식 2 결과가 참일 경우 실행되는 코드 영역
}
else{
	조건식1 조건식2 모두 거짓을 경우 실행되는 코드 영역
}


👍 예시

var a = 1
var b = 2
var c = 3
// 1. if 문 두 번 사용하기
if (a < b){
    Log.d("ControlFlow", "1: a는 b보다 작습니다.")
}
if(a < c){
    Log.d("ControlFlow", "1: a는 c보다 작습니다.")
}
// 2. else if 문 사용하기
if(a < b){
    Log.d("ControlFlow", "2: a는 b보다 작습니다.")
}
else if(a < c){
    Log.d("ControlFlow", "2: a는 c보다 작습니다.")
}

출력 결과

1: a b보다 작습니다.
1: a c보다 작습니다.
2: a c보다 작습니다.


👍 예시

변수에 직접 if문 사용하기

var a = 5
var b = 3
var bigger = if (a > b) a else b


if 문의 마지막 값을 반환값으로 사용하기

var a = 5
var b = 3
var bigger = if (a > b){
	var c = 30
	a // 마지막 줄의 a 값이 변수 bigger에 저장됩니다. 
}
else
{
	b
}



2. 조건문 when


when은 c나 c++, java 등에서 사용하는 switch 문과 유사합니다.

if 문과 비교하자면 when 문은 if 문의 연산식에서 사용되는 비교 연산자 중 ==만 사용해서 같은 값인지 비교하는 조건문입니다.


하지만 코틀린의 when 문은 다른 언어와는 다르게 같은 값뿐만 아니라 범위 값도 처리할 수 있고 사용 방법도 많아 특정 값을 선택할 수 있는 switch 문에 범위 비교 기능이 더해진 if 문의 확장판으로 생각할 수 있습니다.


when 문의 구조

when(파라미터){
	비교값 -> {
		// 변숫값이 비교값1과 같다면 이 영역이 실행됩니다. 
	}
	비교값2 -> {
		// 변숫값이 비교값2와 같다면 이 영역이 실행됩니다. 
	}
	else -> {
		// 변숫값이 앞에서 비교한 값들과 다르면 이 영역이 실행됩니다. 
	}
}


👍 예시

기본적인 when 문 사용하기

var now = 10
when (now){
	8 -> {
        ~~~
    }
    9 -> {
        ~~~
    }
    else -> {
        ~~~
    }
}

콤마로 구분해서 사용하기

var now = 10
when (now){
	8, 9 -> {
        ~~~
    }
    else -> {
        ~~~
    }
}

범위 값을 비교하기

in을 사용해서 <=, <= 과 같은 비교 기능을 구현할 수 있습니다.

var ageOfMichael = 19
when (ageOfMichael){
    in 10..19 -> {
        ~~~
    }
    !in 10..19 -> {
        ~~~
    }
    else -> {
        ~~~
    }
}

파라미터 없는 when 사용하기

when 다음에 오는 괄호를 생략하고 마치 if 문처럼 사용할 수도 있습니다.

var currentTime = 6
when{
    currentTime == 5 -> {
        ~~~
    }
    currentTime > 5 -> {
        ~~~
    }
    else -> {
        ~~~
    }
}

변수에 직접 when 문 사용하기

when 문도 if 문과 마찬가지로 변수에 직접 사용할 수 있습니다.

var result = when(10){
    if 9 -> true
    in 5..20 -> false
    else -> true
}



3. if문과 when문은 언제 사용할까?


시간 데이터를 예로 들어보죠. 시간 데이터에는 년, 월, 일, 요일, 시간 등의 많은 종류가 있습니다.

  • 연도데이터
    • …, 2019, 2020, 2021, …: 범위를 한정할 수 없고 개수가 많습니다.
  • 요일데이터
    • 월, 화, 수, 목, 금, 토, 일: 범위/값을 특정할 수 있습니다.


위 2개의 시간 데이터들 중 연도 데이터if문을, 요일 데이터when문을 사용하는 것이 좋습니다.

즉, 범위가 넓고 값을 특정할 수 없는 경우에는 if문을, 범위 또는 값을 특정할 수 있는 경우 when문을 사용하는 것이 좋습니다.

Categories:

Updated:

Leave a comment