Coding Memo

Kotlin null 값 본문

Language/Kotlin

Kotlin null 값

minttea25 2021. 1. 6. 14:01

Kotlin은 null safe 한 언어이다. (null 값이 있으면 컴파일이 되지 않는다.)

 

null값을 이용해야 할 때도 있다.

앞서서 변수타입에 '?'를 붙여서 null 값을 줄 수 있다는 것을 알았다.

 

var a: String? = null

var b: Int? = null

 

이를 이용할 경우 null 값인지 확인해야 한다.

null값을 그대로 참조하려고 할 경우 컴파일이 되지 않는다.

그 방법에는 3가지가 있다.

(온점(.)에 유의하도록 하자. 온점은 참조 연산자이다!)

?. Null safe operator 참조연산자(.) 실행 전에 해당 값이 null 이면, 참조연산자 후의 구문(함수)를 실행하지 않는다.
?: Elvis operator 해당 값이 null이 아니라면 뒤의 함수를 실행하고, null 이면 우측의 값으로 대체되어 실행이 된다.
!!. Non-null assertion operator null 값을 참조하는 것을 허용한다. (즉, 컴파일 시 null 여부를 확인하지 않도록 해서 의도적으로 null pointer exception을 일으킬 수 있다.)
fun main() {
    var a: String? = null
    var b: Int? = null

    println(a?.get(0))
    println(b?.plus(b))

    println(a?:"default"[0]) //여기서는 [] 연산자 사용이 가능하다...(?!)
    println(b?:1 * 3)

    try {
        println(a!![0]) //(=a!!.get(0))
    } catch (e: NullPointerException) {
        println("Null Pointer Exception 발생!")
    }

    try {
        println(b!!)
    } catch (e: NullPointerException) {
        println("Null Pointer Exception 발생!")
    }
}

null 예시 출력 결과

처음 a와 b의 println()은 참조 연산자 뒤의 구문이 실행되지 않았으므로 단순히, println(a), println(b)가 실행이 되어 null을 출력하는 것을 확인할 수 있다.

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

Kotlin 중첩 / 내부 클래스  (0) 2021.01.08
Kotlin 함수 파라미터  (0) 2021.01.06
Kotlin 제네릭  (0) 2021.01.06
Kotlin 캐스팅  (0) 2021.01.06
Kotlin 문자열  (0) 2021.01.05