Develop/Kotlin

[kotlin] 코틀린 조건문(if -else, when)과 비교 연산자

JunJangE 2021. 2. 2. 16:54

코틀린에서 조건문 if -else, when 사용 방법에 대해 알아보도록 하겠습니다.

먼저 if -else 조건문에 대해 알아보도록 하면 다른 언어에서 사용되는 if -else 조건문과 큰 차이가 없다는 것을 알 수 있습니다.

if(조건식){
  실행할 명령 // 조건식이 true인 경우에만 실행
}else if(조건식){
    실행할 명령 // 조건식이 true인 경우에만 실행   
}else{
	실행할 명령 // 조건식이 true인 경우에만 실행
}

여기서 if 조건문만 사용할 수 도 있고 if -else 조건문만 사용할 수도 있고 필요에 따라 사용하시면 됩니다. 

예제 코드를 보면서 확인해 보겠습니다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        var a = 3
        var b = 3
        
        if(a>1){
            a++
        }else if (b>1){
            b++
        }else{
            a--
            b--
        }
    }
}

위 코드처럼 if -else 조건문을 코드로 구현할 수 있습니다.


다음으로는 when 조건문에 대해 알아보도록 하겠습니다.

when 조건문은 다른 언어에서 사용되는 switch 조건문과 동일한 역할을 합니다.

하지만, 코틀린의 when 조건문은 switch 조건문처럼 break를 넣지 않아도 해당되는 케이스만 실행됩니다.

when(비교할 변수){

  변수에 일치하는 값 혹은 표현식 -> 실행할 명령
  ...
  else -> 실행할 명령

}

true, false 로 비교하는 if -else 조건문과 다르게 when 조건문은 하나의 변수로 여러 개의 값을 비교할 수 있습니다.

다음 예제 코드를 보면서 자세히 알아보도록 하겠습니다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var number = 7

        when(number){
            1 -> println("number는 1 입니다.")
            2 -> println("number는 2 입니다.")
            3,4 -> println("number는 3,4 입니다.") // number가 3과 4인 경우
            in 5..10 -> println("number는 5~10 입니다.") // number가  5~10인 경우(5,6,7,8,9,10)
            else -> println("number를 알 수 없습니다.") 
        }
    }
}

위 코드처럼 when 조건문을 통해 number라는 변수를 여러 개의 값으로 비교할 수 있습니다.

이때, when 조건문 안에 'in' 키워드와 '..' 기호가 있는데 'in' 키워드와 '..' 기호를 사용하게 되면 범위를 지정할 수 있습니다. 또 when 조건문에 경우 ', ' 연산자도 사용할 수 있습니다. 

이렇게 많은 조건을 체크해야 하는 경우에는 다중 if 조건문이 아닌 when 조건문을 사용하는 게 더욱 간결한 코드로 유지할 수 있을 것입니다.


마지막으로 간단하게 비교 연산자에 대해서 알아보도록 하겠습니다.

*등호 : ==

*부등호 :  <, <=, >, >=, !=

*is : 자료형이 맞는지 체크해주는 연산자

*!is : 자료형이 틀린 지 체크해주는 연산자

ex) a is Int

: 좌측 a라는 변수가 우측 Int 자료형에 호환되는지 여부를 체크하고 형변환까지 한 번에 진행시켜 줍니다.