[Kotlin] 코틀린 Null Safety

2024. 7. 2. 22:41·Language/Kotlin
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
저작자표시 비영리 변경금지 (새창열림)

'Language > Kotlin' 카테고리의 다른 글

[Kotlin] 코틀린 리스트/배열  (0) 2024.07.02
[Kotlin] 코틀린 문자열  (0) 2024.07.02
[Kotlin] 코틀린 자료형 / 변수 / 상수 / 연산자  (0) 2024.07.02
[Kotlin] 코틀린 시작하기  (0) 2024.06.30
[Kotlin] 코틀린 특징 및 개발환경 구성  (0) 2023.09.16
'Language/Kotlin' 카테고리의 다른 글
  • [Kotlin] 코틀린 리스트/배열
  • [Kotlin] 코틀린 문자열
  • [Kotlin] 코틀린 자료형 / 변수 / 상수 / 연산자
  • [Kotlin] 코틀린 시작하기
dev.parkjh
dev.parkjh
Jay Blog. Github: https://github.com/GreatPark96
  • dev.parkjh
    0과 1을 공부하다.
    dev.parkjh
  • 전체
    오늘
    어제
    • 분류 전체보기 (114)
      • Profile (2)
      • Paper (6)
      • Column (3)
      • Project (8)
        • Smart Home (3)
        • 3D Printing (5)
      • Front-End (0)
        • Web (3)
      • Back-End (8)
        • API (1)
        • DB (1)
        • Laravel (4)
      • Language (16)
        • Kotlin (11)
        • C, C++ (3)
        • JAVA (0)
        • python (2)
      • System (28)
        • Server (15)
        • Security (1)
        • Network (1)
        • Linux (8)
        • Cloud (3)
      • ETC (34)
        • Book Recommend (Computer) (3)
        • IoT (7)
        • BlockChain (7)
        • ETC (17)
      • My YOLO (1)
      • Note (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Database
    Notification
    데이터 직렬화 포맷
    ai code review
    linux job
    docker private register
    3D모델링
    3D프린터 입문
    docker
    네이버클라우드
    gitlab
    data serialization formats
    리눅스 파일동기화
    코틀린개발환경
    docker container
    3d프린터 초보
    NAS HDD교체
    github
    ncp container registry
    nas
    Jenkins
    git
    3D프린터
    coderabbit
    3D
    kubernetes
    ci/cd
    C언어
    work hour
    Kotlin
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev.parkjh
[Kotlin] 코틀린 Null Safety
상단으로

티스토리툴바