Home > Java > Java > ☕️[Java] null이란?

☕️[Java] null이란?
Java Programming Language Backend

☕️[Java] null이란?

1️⃣ null.

  • Java에서 null은 참조형 타입(Reference Type) 변수에 사용되는 특별한 값으로, 해당 변수가 어떤 객체도 가리키지 않고 있음을 나타냅니다.
    • 즉, null은 변수에 객체의 참조가 없음을 의미합니다.

2️⃣ 주요 특징.

  • 1. 참조형 타입에만 적용.
    • null은 기본형 타입(Primitive Type)에는 사용할 수 없으며, 오직 참조형 타입(예: String, Integer, List 등) 변수에만 사용할 수 있습니다.
    • 기본형 타입의 변수는 null이 아닌, 각 타입의 기본값(예: int0, booleanfalse)을 가집니다.
  • 2. 객체의 부재.
    • null은 변수에 객체가 할당되지 않았거나, 명시적으로 “객체가 없음”을 나타내고자 할 때 사용됩니다.
      • 예를 들어, 객체가 생성되지 않거나 초기화되지 않은 상태에서 참조형 변수를 선언하면, 해당 변수는 기본적으로 null 값을 가집니다.
  • 3. NullPointerException.
    • null 참조를 사용하려고 할 때(예: null 객체의 메서드를 호출하거나 필드에 접근할 때), Java는 NullPointerException을 발생시킵니다.
      • 이는 매우 일반적인 런타임 오류 중 하나입니다.

3️⃣ null의 사용 예.

public class Main {
    public static void main(String[] args) {
        String str = null; // str은 어떤 객체도 가리키지 않음
        
        if (str == null) {
            System.out.println("str은 null입니다.");
        }
        
        // NullPointerException을 피하기 위해 null 검사를 수행해야 합니다.
        if (str != null) {
            System.out.println(str.length()); // str이 null이 아닌 경우에만 실행
        }
        
        // 만약 null 검사를 하지 않고 null 참조를 사용하면 NullPointerException 발생
        try {
            System.out.println(str.length());
        } catch (NullPointerException e) {
            System.out.println("NullPointerException 발생: " + e.getMessage());
        }
    }
}
  • 위 코드에서 str 변수는 null로 초기화되었습니다.
  • str.length()를 호출하려고 하면, NullPointerException이 발생합니다.
    • 이 오류를 피라기 위해서는 항상 null 검사를 수행해야 합니다.

4️⃣ null 사용의 주의점.

  • 1. NullPointerException 방지.
    • 코드를 작성할 때, null일 가능성을 항상 염두에 두어야 합니다.
    • null 검사를 적절히 수행하지 않으면 NullPointerException이 발생할 수 있습니다.
  • 2. Optional 사용.
    • Java 8 이후에는 Optional 클래스를 사용하여 null을 안전하게 처리할 수 있습니다.
    • Optional은 값이 있거나 없음을 명시적으로 나타내어 null 참조를 피할 수 있게 해줍니다.
      ```java
      import java.util.Optional;

public class Main {
public static void main(String[] args) {
Optional optionalStr = Optional.ofNullable(null);

    if (optionalStr.isPresent()) {
        System.out.println(optionalStr.get());
    } else {
        System.out.println("값이 존재하지 않습니다.");
    }
} } ```
  • 위 코드에서 Optional.ofNullable(null)을 사용하여 null을 안전하게 처리할 수 있습니다.

5️⃣ 요약.

  • null은 참조형 타입 변수가 어떤 객체도 참조하지 않고 있음을 나타냅니다.
  • null을 잘못 사용하면 NullPointerException이 발생할 수 있으며, 이를 방지하기 위해서는 null 검사를 철저히 수행해야 합니다.
  • Java 8 이후에는 Optional 클래스를 사용하여 null 참조를 보다 안전하게 관리할 수 있습니다.