Coding Memo
Kotlin null 값 본문
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 발생!")
}
}
처음 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 |