본문으로 바로가기

[Kotlin] 5. 조건문(if, switch, when)

category Program/Kotlin 2022. 9. 13. 17:25

if문

  • Java의 if문과 동일하다.
fun getPassOrFail(score: Int) : String {
    if(score >= 50){
        return "P"
    }else{
        return "F"
    }
}

Expression & Statement

  • if문은 Java에서는 Statement지만 Kotlin Expression 이다.
    • 문장(Statement) : 프로그램의 문장, 하나의 값으로 도출되지 않는다.
    • 표현식(Expression) : 하나의 값으로 도출되는 문장
    • 문장이 표현식을 포함하는 관계
  • Java의 3항연산자는 expression이면서 statement
  • Kotlin에서는 if문도 expression기 때문에 3항연산자가 없다.
fun getPassOrFail(score: Int) : String { 
    return if(score >= 50){ // if문도 expression이기 때문에 바로 반환
        "P"
    }else{
        "F"
    }
    //return score >= 50? "P" : "F";  //Java 3항연산자
}

범위 조건 확인하기 (in)

  • in 을 이용하여 between 을 사용하듯이 범위 조건을 지정할 수 있다.
fun validateScoreIsNotNegative(score: Int){   
    if(score !in 0..100){
        throw  IllegalArgumentException("${score}는 0보다 작을 수 없습니다");
    }
}

switch와 when

  • 코틀린에서는 switch-case문이 없고 when문이 이를 대체한다.
  • 조건부에서 특정 값이 아닌 expression으로 분기처리
    • case 표기 없이 바로 조건부 → 구문 표기
    • 조건부에는 어떠한 expression이라도 들어갈 수 있다.
    • is Type
    • in..
  • default 는 else로 대체
  • when 에 대입 없이 early return 처럼 활용도 가능
  • 추후에 Enum ClassSealed Class와 사용할 경우 더 진가를 발휘한다.
/**
    when(값){
        조건부 -> 구문
        조건부 -> 구문
        else -> 구문
    }
*/
fun getGrade(score: Int): String? {
    return when (score / 10) {  // 특정값을 조건으로 분기처리
        9 -> "A"
        8 -> "B"
        7 -> "C"
        else -> "D"
    }
}
fun getGrade2(score: Int): String? {
    return when (score) {       // 특정값의 범위를 조건으로 분기 처리
        in 90..99 -> "A"
        in 80..89 -> "B"
        in 70..79 -> "C"
        else -> "D"
    }
}

fun startsWithA(obj:Any): Boolean{  
    return when(obj){  // is를 이용하여 타입 체크
        is String -> obj.startsWith("A")
        else -> false
    }
}

fun judgeNumber(number:Int){   
    when(number){  // 특정 값들일 경우 분기 처리
        1,0,-1 -> println("유효한 숫자입니다.")
        else -> println("유효하지 않은 숫자입니다.")
    }
}

fun judgeNumber2(number: Int){
    when {   // when 에 대입 없이 early return 처럼 활용
        number == 0 -> println("주어진 숫자는 0입니다.")
        number % 2 == 0 -> println("주어진 숫자는 짝수입니다.")
        else -> println("주어진 숫자는 홀수입니다.")
    }
}

Reference

 

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) - 인프런 | 강의

이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com