본문 바로가기

Kotlin

[Kotlin] 04. 조건문과 비교연산

안녕하세요 코틀린 4번째 포스팅은 <조건문과 비교연산>입니다

 

 

<조건문>

 

if

첫번째로 알아볼 조건문은 조건문의 기본 'if'입니다

우리가 흔히 알고 있는 뜻인 '만약 ~한다면' 말 그대로 사용되는 조건문이라고 할 수 있는데요

if문에 주어진 값이 '참'이라면 따라오는 구문을 실행하는 기능을 합니다

 

예시 코드와 함께 if문의 사용을 알아보도록 하겠습니다

 

fun main() {
    var a = 7
    
    if(a > 10) {
    	println("a는 10보다 크다")
    } else {
        println("a는 10보다 작거나 같다")
    }
    // 출력: a는 10보다 작거나 같다
}

 

a는 7이라고 변수에 넣어두고 if문을 실행시켜보면 맨 윗줄에서 a는 10보다 작으니 거짓이 됩니다

그럼 if문 안에 있는 "a는 10보다 크다"는 실행되지 않겠죠?

그렇다면 그 다음줄에 있는 else로 들어가 if문이 거짓일 때 실행되는 구문인

"a는 10보다 작거나 같다"가 출력되게 됩니다

 

if문을 사용할 때 주의할 점은 if 안의 조건문의 결과가 참 또는 거짓 이여야 한다는 것입니다!

 

 

 

When

두번째 조건문은 다중 조건문인 'When' 입니다

다른 언어에서 지원하는 switch문을 좀 더 편리하게 바꾼 기능입니다

if가 참과 거짓만을 비교할 수 있는 반면 when은 하나의 변수를 여러개의 값과 비교할 수 있다는 장점이 있습니다

 

아래의 예시와 함께 when의 사용을 알아보도록 하겠습니다

 

fun main() {
    doWhen(1)
    doWhen("DiMo")
    doWhen(12L)
    doWhen(3.14159)
    doWhen("Kotlin")
}

fun doWhen (a:Any) { // 파라미터를 받아 when에 넣어주는 doWhen 함수
    when(a) {
    	1 -> println("정수 1입니다")
        "DiMo" -> println("디모의 코틀린 강좌입니다")
        is Long -> println("Long 타입 입니다")
        !is String -> println("String 타입이 아닙니다")
        else -> println("어떤 조건도 만족하지 않습니다")
    }
}


/*
출력
정수 1입니다
디모의 코틀린 강좌입니다
Long 타입 입니다
String 타입이 아닙니다
어떤 조건도 만족하지 않습니다
*/

 

doWhen은 파라미터를 받아 when에 넣어주는 함수입니다

이때 파라미터 a는 Any라는 자료형을 사용하는데요, 이는 어떤 자료형이든 상관없이 호환되는 코틀린의 최상위 자료형입니다

(어떤 자료형이든 파라미터로 받을 수 있다는 뜻입니다!)

 

이제 doWhen 함수 안에서 when에 파라미터로 받아온 a를 넣은 후 중괄호 안에 a와 비교할 조건값들을 나열합니다

이때 조건값으로는 숫자, 문자, 또는 is나 !is 연산자 역시 사용이 가능합니다

그리고 위의 어떤 조건값에도 맞지 않는 경우 실행할 else 문도 있습니다

* 다만 등호나 부등호의 사용은 불가능합니다!

 

그리고 doWhen 함수 안에서 여러개의 조건이 맞을 경우엔 먼저 부합하는 조건이 실행됩니다

 

이제 main 함수 안에서 다양한 값을 넣어가며 테스트해보면 아래에 주석 처리된 출력값대로 결과가 나오는 것을 알 수 있습니다

 

 

위의 예제는 When을 조건에 맞는 동작을 하는 조건문으로서 이용한 경우인데요

When의 조건이 맞을 때 동작 대신 값을 반환하는 표현식(expressions)으로서의 역할을 하게 하려면 어떻게 해야할까요?

 

 

바로 아래처럼 When의 조건으로 동작 대신 값을 써주면 됩니다!

 

fun doWhen (a:Any) { // 파라미터를 받아 when에 넣어주는 doWhen 함수
    var result = when(a) {
    	1 -> "정수 1입니다"
        "DiMo" -> "디모의 코틀린 강좌입니다"
        is Long -> "Long 타입 입니다"
        !is String -> "String 타입이 아닙니다"
        else -> "어떤 조건도 만족하지 않습니다"
    }
    
    println(result)
}

 

이렇게 하면 when의 결과를 변수에 할당하거나 직접 값으로써 사용할 수 있습니다

when에서 결과를 result라는 변수에 받아 출력해보면 이전의 예시와 똑같이 출력되는 모습을 확인할 수 있습니다

 

 

프로그램은 조건에 따라 판단하여 수행시켜야 하는 경우가 많습니다

코틀린에서도 조건문이 중요한 역할을 하겠죠?

조건문을 잘 알아두면 많은 도움이 될 것 같습니다

 

 

 

첫번째로 알아봤던 조건문인 if문은 참과 거짓을 이용하여 프로그램에서 실행하는 구문을 나눠주는 역할을 하는데요

위의 예시에서 보이듯이 참과 거짓의 조건은 '비교연산'을 통해 구할 수 있습니다

 

그럼 이때 사용하는 비교연산자에는 어떤 것들이 있는지 알아볼까요?

 

 

 

 

<비교연산자 (comparison operators)>

 

첫번째로 부등호가 있습니다

  • < : 작다
  • <= : 작거나 같다
  • > : 크다
  • >= : 크거나 같다
  • != : 같지 않다

 

 

두번째로 등호가 있습니다

  • == : 같다

이때 등호는 수학에서와 달리 이퀄(=)을 2개 사용합니다

이는 우측의 값을 좌측 변수에 할당하는 *할당연산자와 혼동을 방지하기 위해서 입니다

 

*할당연산자는 대입연산자라고도 불리며 좌측에 있는 변수에 우측에 있는 값을 넣는다는 의미로

특정 변수에 값을 넣을 때 사용하는 연산자입니다

 

 

세번째로는 자료형이 맞는지 체크하는 'is 연산자' 

자료형이 틀린지를 체크하는 * '!is 연산자' 가 있습니다

* !is 연산자는 느낌표가 not을 의미합니다 ('not is 연산자' 라고 읽습니다)

 

  • a is Int

: is 연산자 좌측에 변수를 쓰고 우측에는 확인할 자료형을 쓰면 좌측 변수가 우측 자료형에 호환되는지 여부를 체크하고 형변환까지 한번에 시켜주는 똑똑한 연산자 입니다! 

 

 

 

 

조건문에 빠질 수 없는 비교연산자들까지 알아봤는데요,

비교연산자들을 잘 알아두면 조건문을 더 유용하게 활용할 수 있겠죠?

 

그럼 오늘의 포스팅 <조건문과 비교연산>은 여기서 마치도록 하겠습니다!

 

 

 

 

 

 

*위 글은 유튜브 테크과학! DeMo님의 강좌를 참고하여 작성하였습니다