코틀린

17. Null

mks160615 2025. 2. 8. 16:36

Null이란?

데이터의 값이 없거나 알 수 없는 상태를 의미한다. 0이나 빈칸이 아니다.

Null Pointer Exception이란 Null로 인해 발생한 에러다. 코틀린에서는 이 에러를 방지하기 위해 기본적으로 Null을 허용하지 않는다.

 

var name1
var name2 : String?

코틀린에서 name1로 작성만 하면 완전 에러가 발생하여 코드를 구동하지 못한다.

자바에서 int a로 코드를 마무리하고자 하면 name2처럼 작성해야 한다. 그럼에도 출력을 시도하면 초기화를 하지 않았다고 콘솔창에서 에러를 보여준다. 

Kotlin: Variable 'name2' must be initialized.

 

이때 코드를 아래와 같이 작성하면 null로 선언이 가능하다.

var name3 : String? = null
var name4 = null

둘 다 null로 출력이 된다. 다만 코틀린이 자료형을 추론할 수 없어서 reversed()와 같은 작업을 진행할 수 없다.

!!

!!는 해당 데이터 타입이 Null이 아니라는 것을 확신할 때 사용한다.

var name7 = "Musik"
println(name7!!) // Musik
println(name3!!) // Exception in thread "main" java.lang.NullPointerException
println(name4!!) // 대놓고 Null이라 에러

name7이라는 변수를 새로 선언한 후 초기화를 진행한 뒤!!을 붙이면 Null이 아니므로 원래 값이 출력된다.

name4는 Null이라 대놓고 선언하였기 때문에 사용할 수 없다.

name3은 변수 타입 뒤에 ?까지 넣어주었으나 Null Pointer Exception이 나온다.

?:

코틀린은 기본적으로 Null을 허용하지 않기 때문에 삼항연산자 사용을 지금까지 소개하지 않았다.

코틀린에서 삼항 연산자는 엘비스 코드(?:)를 통해 진행할 수 있다.

var noName = "Anonymous"

var name5 = name7 ?: noName
var name6 = name4 ?: noName
println(name5) // Musik
println(name6) // Anonymous

 

변수를 선언한 뒤 ?: 기준으로 값이 있다면 왼쪽, 없다면 오른쪽 값을 출력해 주는 코드이다.

 

 

GitHub - KrillM/Kotlin_Again: init project

init project. Contribute to KrillM/Kotlin_Again development by creating an account on GitHub.

github.com

 

마무리

코틀린은 기본적으로 Null을 허용하지 않는다. 그러므로 코틀린에서 Null을 다루는 것은 다른 언어에 비해 크게 중요하다고 생각하였다. 프로젝트나 유지 보수를 진행할수록 코드는 여러 사람에 의해 수정, 변형된다. 따라서 특정 코드가 Null 처리될 수 있는 경우가 많다. 코틀린의 특징을 고려한다면 Null 개념은 지금까지 작성한 글보다 더 중요하다고 생각하였다.

 

'코틀린' 카테고리의 다른 글

16. 인터페이스  (0) 2025.02.06
15. 클래스 - Object  (0) 2025.02.06
14. 추상 클래스, 데이터 클래스  (0) 2025.02.05
13. 클래스 - 상속  (0) 2025.01.29
12. 클래스 - 기본  (1) 2025.01.29