0과 1을 공부하다.

[Kotlin] 코틀린 Null Safety 본문

Study/Kotlin

[Kotlin] 코틀린 Null Safety

Developer_Jay 2024. 7. 2. 22:41
728x90

[Kotlin] 코틀린 특징 및 개발환경 구성에서 코틀린의 장점 중 하나로 널 안정성(Null Safety)을 뽑았다. 본 글에서는 왜 코틀린 언어가 널 안정성(Null Safety)가 있는지 알아보고 널 안정성을 위한 방법을 알아본다.

 

코틀린에서 말하는 널 안정성은 NullPointerException(NPE)을 방지하고 안전한 코드 작성을 돕기 위한 것이다. 널 안정성은 코틀린의 타입 시스템에 통합되어 널 가능성(nullability)을 명시적으로 처리하도록 강제한다.

 

코틀린에서 타입을 지정하여 변수를 선언할 때는 널 가능성 타입널 불가능성 타입으로 지정하여 선언할 수 있다.

  • 널 가능성 타입(Nullable type): 변수에 null 값을 허용한다. 타입 뒤에 ?를 붙여 표시한다.
  • 널 불가능성 타입(Non-nullable type): 변수에 null 값을 허용하지 않는다.
fun main() {
    var nullable: String? = "Hello" // 널 가능성 타입
    var nonNullable: String = "Hello" // 널 불가능성 타입

    nullable = null
    nonNullable = null // 컴파일 오류: 널 불가능성 타입에 null 할당 시도

    println(nullable)
    println(nonNullable)
}

 

(safe call)안전한 호출 연산자 (?.)

널 가능성 타입의 변수를 사용할 때, 안전하게 호출 할 수 있도록 한다. 변수에 null 값이 있으면 호출을 무시하고 null을 반환한다.

 

  • 예시 1
val str: String? = “ABC”

str.length // 불가능

str?.length // 가능 (널 아니면 실행, 널이면 null 반환)
  • 예시 2
fun main() {
    var nullable: String? = "Hello" // 널 가능성 타입
    nullable = null

    println(nullable?.length) // 예외 발생하지 않고 null을 반환
    
    var name: String = ""
    
    nullable?.let{
	    name = it // null이 아니라면 name 변수에 nullable 할당
    }
    println(name)
}

 

elvis(엘비스) 연산자 (?:)

널 가능성 타입의 변수가 null 일 때 기본 값을 제공한다.

fun main() {
    var nullable: String? = "Hello" // 널 가능성 타입
    nullable = null

    println(nullable?.length ?: 0) // nullable이 null일 경우 0을 반환
}

 

널 없음 확신 연산자 (!!)

변수에 null 값이 없다고 확신할 때 사용한다. 만약 변수에 null 이라면 NullPointerException 을 발생시킨다.

fun main() {
    var nullable: String? = "Hello" // 널 가능성 타입
    val length = nullable!!.length // nullable이 null이 아니라고 확신
    println(length) // 5 출력
}

 

 

 

 


※ 본 게시글의 정보가 잘못 되었거나 부족한 부분에 대한 피드백을 환영합니다.

 

 

* CopyRight 2024. Jay Park All rights reserved.

 

 

728x90
Comments