[Kotlin] 코틀린에서 String 객체의 null 처리를 위해 사용되는 연산자(예시 활용)

코틀린에서 String 객체의 null 처리를 위해 사용되는 연산자는 ?(Safe Call Operator), ?.(Safe Access Operator), ?:(Elvis Operation) 그리고 !!(Non-null Assertion Operator, 확정 연산자)가 있습니다.

1. ? (Safe Call Operator)와 ?. (Safe Access Operator)

  • ?. 연산자는 객체가 null이 아닐 때만 해당 연산을 수행하고, 객체가 null이면 연산 결과로 null을 반환합니다. 이 연산자는 null 안전성을 보장하는 코틀린의 핵심 기능입니다.
  • ?. 연산자는 . 연산자와 유사하지만, null이 될 수 있는 객체(String?)에만 사용할 수 있습니다.
  • ?. 연산자를 사용하면 NullPointerException 발생을 효과적으로 방지할 수 있습니다.
  • 예시:
    var name: String? = null
    // name이 null이 아니면 toUpperCase()를 호출하고, null이면 toUpperCase()를 호출하지 않고 null을 반환합니다.
    println(name?.toUpperCase()) // 출력: null
    
    name = "kotlin"
    // name이 null이 아니므로 toUpperCase()가 호출됩니다.
    println(name?.toUpperCase()) // 출력: KOTLIN
    

2. ?: (Elvis Operator, 엘비스 연산자)

  • ?: 연산자는 ?. 연산자와 함께 자주 사용됩니다. ?. 연산자의 결과가 null일 경우 기본값을 지정하는 데 사용됩니다.
  • ?: 연산자는 if-else문을 사용하여 null 체크를 하는 것보다 코드를 훨씬 간결하게 만들어 줍니다.
  • 예시:
    var name: String? = null
    
    // name?.toUpperCase()의 결과가 null이므로 "NO NAME"이 반환됩니다.
    val upperName = name?.toUpperCase() ?: "NO NAME"
    println(upperName) // 출력: NO NAME
    
    name = "kotlin"
    
    // name?.toUpperCase()의 결과가 "KOTLIN"이므로 "KOTLIN"이 반환됩니다.
    val upperName2 = name?.toUpperCase() ?: "NO NAME"
    println(upperName2) // 출력: KOTLIN
    

3. !! (Non-null Assertion Operator, 확정 연산자)

  • !! 연산자는 개발자가 해당 객체가 null이 아님을 단정할 때 사용합니다. 만약 실제로 객체가 null이면 NullPointerException이 발생합니다.
  • !! 연산자는 코틀린의 null 안정성 기능을 우회하는 위험한 연산자이므로, 정말 필요한 경우가 아니라면, NullPointerException을 방지하기 위해 ?.?:를 사용하는 것이 좋습니다.
  • 예시:
    var name: String? = "kotlin"
    // 개발자가 name이 null이 아님을 확신하므로 !!를 사용합니다.
    println(name!!.toUpperCase()) // 출력: KOTLIN
    
    var nullName: String? = null
    // nullName이 실제로 null이므로 NullPointerException이 발생합니다.
    println(nullName!!.toUpperCase()) // 런타임 오류: NullPointerException
    

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다