7. 널 안전성 기초 (Null Safety)
자바 개발자들을 가장 괴롭히는 오류는 바로 NullPointerException(NPE)입니다. 코틀린은 아예 컴파일 단계에서 Null 가능성을 차단합니다.
기본적으로 모든 변수는 null을 가질 수 없습니다. 만약 null이 허용되어야 한다면 타입 뒤에 물음표(?)를 붙여야 하며, 이를 Nullable 타입이라고 부릅니다. 널러블 변수는 안전한 호출 연산자(?.)나 엘비스 연산자(?:)를 통해서만 안전하게 다룰 수 있습니다.
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
}