우주먼지
Published 2023. 4. 4. 16:04
Kotlin - Condition Languages/Kotlin

💡 Condition

자바와 코틀린의 if문 차이점

  • void 생략 (Unit 키워드 사용, Unit 생략 가능)
  • 함수를 만들때 fun 키워드 사용
  • Exception을 던질 때 new 키워드 생략
// Java
private void validateScoreIsNotNegative(int score) {
    if (score < 0) {
        throw new IllegalArgumentException(String.format("%s는 0보다 작을 수 없습니다."), score);
    }
}
fun validateScoreIsNotNegative(score: Int) {
    if (score < 0) {
        throw IllegalArgumentException("${score}는 0보다 작을 수 없습니다.")
    }
}

💡 Expression & Statement

자바와 코틀린의 if - else문 차이점

  • 자바에서 if-else는 Statement 이지만, 코틀린에선 Expression이다.
  • Expression 이므로 바로 return 하거나, 변수에 대입할 수 있다.
  • 코틀린의 if-else 만으로 자바의 삼항연산자를 대체할 수 있다.

Statement : 프로그램의 문장 전체를 의미하며, 하나의 값으로 도출되지 않는다.

Expression : 하나의 값으로 도출되는 문장

// Java
private String getPassOrFail(int score) {
    if (score >= 50) {
        return "P";
    } else {
        return "F";
    }
}
// Kotlin
fun getPassOrFail(score: Int): String {
    return if (score >= 50) {
        return "P"
    } else {
        return "F"
    }
}

// if의 다른 사용법
fun startsWithA(obj: Any): Boolean {
    return when (obj) {
        is String -> obj.startsWith("A") // Smart Casting
        else -> false
    }
}

💡 Switch & When

자바와 코틀린의 switch문 차이점

  • 자바의 switch를 코틀린에서 when으로 사용한다.
  • when은 Expression이기 때문에 바로 return이 가능하다.
  • case를 작성하지 않고 화살표로 분기를 준다.
  • default 대신 else를 사용한다.
  • when의 조건부에는 어떠한 Expression이라도 들어갈 수 있다. (is, as, .. 등)
  • 여러개의 조건을 동시에 검증이 가능하다.
  • when의 조건 ()이 없는 경우도 가능하다.
  • when은 Enum Class, Sealed Class와 함께 사용할 경우 더욱 더 진가를 발휘한다.
// Java
private String getGradeWithSwitch(int score) {
    switch (score / 10) {
        case 9:
            return "A";
        case 8:
            return "B";
        case 7:
            return "C";
        default:
            return "D";
    }
}
// Kotlin
fun getGradeWithSwitch(score: Int): String {
    return when (score / 10) {
        9 -> "A"
        8 -> "B"
        7 -> "C"
        ele -> "D"
    }
}

// when의 다른 사용법
fun getGradeWithSwitch(score: Int): String {
    return when (score) {
        in 90.99 -> "A"
        in 80.89 -> "B"
        in 70.79 -> "C"
        else -> "D"
    }
}

// 여러개의 조건을 동시에 검증
fun judgeNumber(num: Int) {
    when (num) {
        1, 0, -1 -> println("어디서 많이 본 숫자입니다.")
        else -> println("1, 0, -1이 아닙니다.")
    }
}

// 조건이 없는 경우
fun judgeNumber(num: Int) {
    when {
        num == 0 -> println("숫자는 0입니다.")
        num % 2 == 0 -> println("숫자는 짝수입니다.")
        else -> println("숫자는 홀수입니다.")
    }
}

'Languages > Kotlin' 카테고리의 다른 글

Kotlin - Loop  (0) 2023.04.06
Kotlin - Operator  (0) 2023.04.04
Kotlin - Null  (0) 2023.04.03
Kotlin - Type  (0) 2023.04.03
Kotlin - Variable  (0) 2023.04.03
profile

우주먼지

@o귤o

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그