이번 글에서는 Nullable변수에 대해서 알아보도록 하겠습니다.
Nullable
코틀린의 장점을 몇 가지 나열했을 때, null에 대한 안전성을 가진다고 말했던 적이 있습니다.
이에 대해 말해보려고 하는데, 예를 들어 아래와 같은 코드가 있다고 생각해봅시다.
fun main() {
var a:Int
}
보통 이렇게 변수를 선언함과 동시에 초기화하지 않으면 대부분의 프로그래밍 언어의 경우
Int형의 기본값인 0이나 null로 변수가 자동적으로 초기화됩니다.
하지만 코틀린에서는 이렇게 변수가 처음에 null로 초기화되는 것을 기본적으로 금지하고 있습니다.
때문에 위의 코드의 경우 a를 출력시키려고 하면 반드시 a를 초기화해야 한다고 오류 메시지가 출력될 것입니다.
이렇게 변수 선언 시 null값이 들어가는 것을 막아서 오류를 발생시키기 때문에
프로그래머가 원치 않는 동작이나 null pointer exception 등을 사전에 차단시켜주고,
이 때문에 코틀린이 null에 대해 안전성을 가지고 있다고 이야기하는 것입니다.
이 오류는 a에 값을 입력해서 초기화해주면 발생하지 않게 됩니다.
물론, 절대로 null을 저장할 수 없는 것은 아닙니다.
코틀린에서는 null을 저장할 수 있도록 하기위해 nullable변수라는 것을 지원하고있습니다.
fun main() {
var a: Int = null
var b: Int? = null
println(a)
println(b)
}
nullable변수를 선언하는 방법은 간단하게 변수 선언 뒤에 ?를 붙여주시기만 하면 됩니다.
위의 코드로 확인해보면 nullable 하지 않은 변수 a의 경우 null을 넣으면 오류가 발생하지만
nullable변수인 b의 경우 null을 넣고 출력해도 프로그램이 정상적으로 동작하는 것을 볼 수 있습니다.
이렇게 nullable변수를 선언하는 법에 대해서 알아봤는데, 이를 사용해 null이 들어가 있는 변수를
잘못 사용할 경우 null pointer exeception이나 원치 않는 동작을 유발할 수 있기 때문에 사용 시 주의해주시길 바랍니다.
이번 글은 이 정도로 마치도록 하겠습니다.
감사합니다.
'프로그래밍 언어 > 코틀린' 카테고리의 다른 글
코틀린 9. 반복문 (0) | 2020.12.22 |
---|---|
코틀린 8. 조건문 (0) | 2020.12.22 |
코틀린 6. 함수 (0) | 2020.12.21 |
코틀린 5. 배열 (0) | 2020.12.21 |
코틀린 4. 타입추론과 형변환 (0) | 2020.12.21 |