[Android] 3(3). 코틀린 기본 문법(조건문)
조건문
코틀린의 조건문에는 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문을 사용하는 것이 좋습니다.
Leave a comment