minstudio

7. 널 안전성 기초 (Null Safety)

자바 개발자들을 가장 괴롭히는 오류는 바로 NullPointerException(NPE)입니다. 코틀린은 아예 컴파일 단계에서 Null 가능성을 차단합니다.

기본적으로 모든 변수는 null을 가질 수 없습니다. 만약 null이 허용되어야 한다면 타입 뒤에 물음표(?)를 붙여야 하며, 이를 Nullable 타입이라고 부릅니다. 널러블 변수는 안전한 호출 연산자(?.)나 엘비스 연산자(?:)를 통해서만 안전하게 다룰 수 있습니다.

🛡️ 엘비스 연산자 (?:) Nullable 변수 name ?: Default 값 "익명" name이 null이 아니면 name 반환, null이면 "익명" 반환
fun main() {
    // 1. 기본 타입은 절대 null을 가질 수 없습니다.
    var nonNullString: String = "Hello"
    // nonNullString = null // 컴파일 에러!

    // 2. Nullable 타입 (타입명 뒤에 ?)
    var nullableString: String? = "Kotlin"
    nullableString = null // 정상 작동
    
    // 3. 안전한 호출 연산자 (?.)
    // 변수가 null이면 뒤의 메서드를 실행하지 않고 null을 반환합니다.
    val length = nullableString?.length
    println("문자열의 길이는? " + length) // 출력: null

    // 4. 엘비스 연산자 (?:)
    // 만약 왼쪽 값이 null이라면, 오른쪽의 대체값을 반환합니다.
    val safeLength = nullableString?.length ?: 0
    println("안전한 문자열의 길이는? " + safeLength) // 출력: 0
}
7. 널 안전성 기초 (Null Safety) | Minstudio