본문 바로가기
Kotlin

4. 코틀린 Null

by programmer-ds 2024. 11. 9.

1. Null

  • 0과는 다른 값
  • Null을 대상으로는 연산을 할 수 없음 (비교 연산은 가능!)
  • 존재하지 않는 값
  • NullSafety : Null로 부터 안전해지자 (코틀린 특징 중 하나)
  • Null을 사용하는 방법
    • val/var 변수명 : 자료형? = null 
      • val num: Int? = null    -> null 가능
      • val num: Int = 10        -> null 불가능 (null을 넣어주면 에러 발생)
val number: Int? = null
// nullable하다

println(number)
// null

 

 

  • 일반 Int 타입과 Int? 타입은 Int형 연산 시 차이가 있음. 아래와 같은 코드는 정상 작동함
val num1: Int = 2 + 4
val num2: Int = 10
val num3: Int = num1 + num2
println(num3)
// 출력 : 16

 

 

  • 하지만 nullable 타입은 null일 수 있기 때문에 정수형 변수를 담지만 정수형 연산을 할 수 없음.
val num1: Int? = 2 + 4
val num2: Int? = 10
val num3: Int? = num1 + num2
println(num3)

// 에러 발생
// : error: operator call corresponds to a dot-qualified call 'num1.plus(num2)' which is not allowed on a nullable receiver 'num1'.
// val num3: Int? = num1 + num2
                         ^
// : error: type mismatch: inferred type is Int? but Int was expected
// val num3: Int? = num1 + num2
                         ^

 

  • 여기서 '!!' 를 사용하면 null이 아니라고 보장할 수 있음 
val num1: Int? = 2 + 4
val num2: Int? = 10
val num3: Int? = num1!! + num2!!
println(num3)
// 출력 : 16

 

  • 하지만 null이 들어갈 경우 NullPointer Exception 발생한다. 따라서 !!는 사용하지 않는 것이 안전함
val num1: Int? = null
val num2: Int? = 10
val num3: Int? = num1!! + num2!!
println(num3)

// Error발생
// java.lang.NullPointerException

 

  • null 값도 비교 연산은 사용 가능
if(null == null) {
    println("같음")
} else {
    println("다름")
}
// 출력 : 같음

'Kotlin' 카테고리의 다른 글

3. 코틀린 자료형  (0) 2024.11.09
2. 코틀린 기본 문법  (1) 2024.10.13
1. 코틀린 시작하기 (설치 및 환경 설정)  (2) 2024.10.13