Kotlin

[Kotlin] 조건문 (if~else 문, when 문)

별볼일있는 개발자 2023. 11. 4. 21:36

 

코틀린에서 조건문은 if~else 문과 when 문이 있다.

 

사용방법은 자바에서의 조건문과 거의 비슷하다고 생각하면 된다.

 

1. if~else

아래 코드는 파라미터로 넘어오는 score의 값에 따라서

 

80점 이상이면 'PASS', 80점 미만이면 'FAIL' 인지 리턴하는 간단한 예제이다.

 

main 함수에서 getGrade 함수를 호출하면 어떻게 될까?

 

출력 결과는 FAIL이 나온다.

 

 

코틀린에서 if 문은 자바와 마찬가지로, 

 

if를 선언하고, ()안에 조건의 내용을 쓰고, {} 괄호안에 그 조건에 해당하면 실행할 구문을 쓰게 된다.

 

그리고 else, if else 등을 통해 다른 조건을 나열하면서 해당 조건에 해당하는 구문을 실행하게 된다.

 

여기까지는 자바의 if 문과 크게 다를 것이 없다. 

 

하지만 자바에서 if~else 문은 Statement이지만

 

코틀린에서는 Expression 이다.

 

이게 어떤 의미냐면,

 

Statement는 프로그램의 하나의 문장이고, 하나의 값으로 도출이 되지 않는다.

 

Expression은 하나의 값으로 도출되는 문장이다.

 

자세히 살펴보면, 자바에서는 위 코드와 같이 조건에 해당하는 구문을 리턴하기 위해 구문마다 return을 사용했었다.

 

if문 자체가 하나의 문장이고 if문 자체가 하나의 값으로 도출될 수가 없었다.

 

하지만 코틀린에서는 아래 코드와 같이 if~else 문이 하나의 값으로 도출이 되서 바로 리턴될 수 있는 것을 알 수 있다.

 

아래코드와 결과는 위 코드와 동일하게 FAIL이 출력된다.

 

if문 앞에 return을 붙여서 좀 더 직관적으로 사용가능.

 

 

2. when

코틀린에서는 자바의 swich~case 문과 비슷한 when 조건문이 있다.

 

아래 코드는 파라미터로 넘어온 score의 값에 따라서 'A!!', 'B!!', 'C!!', '0' 중에 하나가 출력되는 코드이다.

 

아래 코드의 결과값은 예상한대로 'C!!' 가 출력된다.

 

그리고 when 문 또한 Expression 이기 때문에 when 문 앞에다 return을 붙여서 바로 해당하는 결과값을 리턴할 수 있다.

 

 

 

when 문의 다른 활용방법을 살펴보자

 

아래 코드 처럼 in 을 붙여서 범위로 지정할 수도 있다. 

 

이런 점이 자바의 switch~case 문과의 차이점이고 좀 더 직관적이고 간결하게 사용할 수 있다.

 

이 코드의 결과값은 0 이 나온다.

 

when 문의 또다른 활용방법을 살펴보자.

 

아래 코드는 넘어오는 파라미터의 타입에 따라서 해당 문자열을 출력하는 코드이다.

 

넘어오는 score의 타입이 String , Int , 다른타입이면 해당하는 문자열이 출력이 된다.

 

아래 코드는 a라는 String 타입이 넘어왔기 때문에 출력 결과로는 문자입니다 라고 출력된다.

 

코틀린에서 is 연산자는 자료형을 검사하기 위해 사용한다. 

 

자바에서 instanceof 메서드와 동일한 것이다.

 

 

 

또 다른 사용방법을 보면,

 

아래 코드와 같이 넘어온 값에 따라 해당하는 조건의 값들을 찝어서 지정할 수도 있다.

 

아래 코드는 1이라는 정수가 넘어왔기 때문에 '1~5 사이에 있습니다' 라고 출력된다.

 

 

 

이처럼 코틀린에서 if~else 문과 when 문은 자바와 다르게 Expression 이기 때문에,

 

조건문 자체를 값으로 도출시켜서 바로 리턴할 수 있고,

 

when 문에서 다양하게 조건문을 서술하는 것을 통해 조건문을 직관적이고 쉽게 사용할 수 있다.

 

간단한 조건문일 경우는 if문을 사용하지만, when 문을 더 많이 사용하게 되는 것 같다.