안드로이드/코틀린 개념

[코틀린/Kotlin] 코틀린 개념 정리 3 - Null 안전성(Null Safety)

감자 바보 2022. 6. 6. 16:02
반응형

코틀린 개념 정리 3 - Null 안전성(Null Safety)

 이번 게시글에서는 코틀린에서 Null 안전성에 대한 기본 개념을 정리할 것이다.

 

Null, NPE(Null Pointer Exception), Null 안전성(Null Safety)란?

 프로그래밍 언어에서 Null이란 변수에 아무 값도 할당되지 않은 상태를 의미한다.

 프로그래밍 언어에서는 사용하는 변수가 Null 일 경우에 NPE(Null Pointer Exception)이란 오류를 발생시킨다.

 

 코틀린은 다양한 처리를 제공하여 NPE 발생을 방지하는 것을 돕는다. 이로인해 코틀린을 Null 안전성이 있는 언어라고 한다.

 

Nullable 자료형과 Non-null 자료형

 코틀린은 변수의 타입을 선언할 때 Null을 할당 여부를 지정해야 한다.

 

 Null 할당을 허용하는 Nullable 자료형은 일반 자료형의 끝에 ?를 붙여 선언할 수 있다.

 ex) String?, Int?, Boolean?

 

 자료형 끝에 ?를 붙이지 않을 경우 해당 변수는 Null을 할당 할 수 없는 Non-null 자료형이다. 

 ex) String, Int, Boolean

 

 Nullable 자료형의 경우 lateinit을 사용하지 않더라도 변수의 선언과 동시에 초기화를 하지 않을 수 있다. 하지만 변수 사용 전 초기화를 하지 않을 경우 'Variable must be initialized' 라는 메시지와 함께 오류가 발생하기 때문에 변수 사용전 반드시 초기화를 수행해주어야 한다.

 

Nullable 변수 초기화 안할 경우
위와 같은 오류가 발생한다.

 

세이프 콜 ?.

 세이프 콜 연산자 ?.는 nullable 변수를 사용할 경우 사전에 검사하여 NPE가 발생하지 않도록 해준다. 만약 해당 변수가 null일 경우는 null을 반환한다. 

 

 ex) Nullable 변수?.

Non-null 단정 기호 !!

 Non-null 단정 기호 !!를 사용하면 컴파일러는 해당 변수를 null 검사 없이 사용하게 됩니다. 만약 null일 경우 NPE 오류가 발생하기 때문에 반드시 null이 아닌 게 보장될 때만 사용해야 합니다. 

 

 ex) Nullable 변수 !!

 

엘비스 연산자 ?:

 엘비스 연산자 ?:는 변수가 null인지 검사하여 null 일 경우 연산자 오른쪽의 구문을 수행한다. 

 

 ex) Nullable 변수 ?: null일 떄 수행될 구문

 

참고

1. 위키백과 - 코틀린, 코틀린 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

코틀린 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전

코틀린(Kotlin)은 JVM에서 동작하는 크로스 플랫폼 오픈소스 프로그래밍 언어이다. 2011년 7월, 젯브레인사가 공개하였다. 파일 확장자는 .kt 또는 .kts를 사용한다. 코틀린은 2019년 5월 7일 이후로 구

ko.wikipedia.org

2. boostcourse - 코틀린 프로그래밍 기본 1 강의 (강사 : 황영덕), 코틀린 프로그래밍 기본 1 > 2-1 기본 자료형과 변수 선언방법 (1) 불변형, 기본형 : 부스트코스 (boostcourse.org)

 

코틀린 프로그래밍 기본 1

부스트코스 무료 강의

www.boostcourse.org

3. 코틀린 공식 사이트 - Basic syntax | Kotlin (kotlinlang.org)

 

Basic syntax | Kotlin

 

kotlinlang.org