[Kotlin] 코틀린의 null 처리 방식

DaeHoon·2022년 2월 22일
0

1. ? (Nullable types)

  • 타입 뒤에 '?' 키워드를 붙임으로서 null이 가능한 변수임을 명시적으로 표시
fun main() {
  var nullTest: String? = null
 }

2. ?. (Safe Call Operator)

  • 이 연산자를 사용할 시 null이 아닐 경우에만 로직이 수행되고 null일 시 null을 반환한다.
  • 조건문으로 null에 대한 처리를 할 필요 없이 '?.' 하나로 처리 가능.
fun testFun(s: String?): String? {
  return s?.uppercase()
}

fun main() {
  testFun("abcdtesttc")
  testFun(null)
}

3. ?: (Elvis Operator)

  • 변수가 null일 경우 '?:' 연산자 뒤에 있는 값을 반환한다.
fun testFun(s: String?): String? {
  return s ?: "unknown"
}

fun main() {
  println(testFun("abcdtesttc"))
  println(testFun(null))
}

Output
abcdtesttc
unknown

4. !! (강제 not null 처리)

  • 이 기호를 프로퍼티나 변수에 붙이면 강제로 not null 선언
  • null이 들어올 시 NullPointerExecption 발생
fun testFun(s: String?): Int? {
  val NotNull: String = s!!
  return NotNull.length
}

fun main() {
  println(testFun("abcdtesttc"))
  println(testFun(null))
}

Output
10
Exception in thread "main" java.lang.NullPointerException

5. let

  • 변수가 null이 아닐 때 한해 let의 scope가 실행된다.
fun testFun(s: String?): String? {
  return s?.let {
      "NOT NULL KKK"
  }
}

fun main() {
  println(testFun("testString"))
  println(testFun(null))
}

Output
NOT NULL KKK
null

profile
평범한 백엔드 개발자

0개의 댓글