Null
은 값이 없음을 나타내는 개념입니다. 변수나 객체가 아무런 값을 가지고 있지 않을 때, 즉 참조가 어떤 객체도 가리키지 않을 때 null
을 사용하여 이를 표현합니다.
프로그래밍 언어에서는 null
을 허용하는 타입과 그렇지 않은 타입을 구분합니다.
예) int i = null;
// error
int? i = null;
// OK
전통적인 타입 시스템에서는 null
이 가능한 타입과 그렇지 않은 타입 사이의 구분이 명확하지 않았습니다. 그러나 프로그래밍이 점점 발달하면서 null
의 개념이 도입되었고 지금은 널리 사용되고 있습니다.
Nullable
타입은 특정 타입이 null
값을 가질 수 있음을 명시적으로 표현합니다. 예를 들어, Kotlin이나 Swift와 같은 언어에서는 변수 뒤에 ?
를 붙여 해당 변수가 null
을 가질 수 있는 nullable
타입임을 나타냅니다.
??
연산자는 null
병합 연산자로서, 표현식이 null
이 아니면 그 값을 반환하고, null
이면 오른쪽에 지정된 기본값을 반환합니다.!
연산자는 null
이 아님을 단언하는 연산자로, 변수 뒤에 사용되어 해당 변수가 null
이 아님을 컴파일러에게 알립니다.?.
연산자는 안전 호출 연산자로, 객체가 null
이 아닐 경우에만 메서드나 속성에 접근하게 해주고, null
일 경우에는 null
을 반환합니다.null
관련 에러를 컴파일 시간에 잡을 수 있어 런타임에 발생할 수 있는 예외를 줄입니다.null
체크를 강제함으로써 더 안전한 코드를 작성할 수 있습니다.null
가능 여부를 타입 시스템을 통해 명확히 표현함으로써 코드의 의도를 더 잘 전달할 수 있습니다.