본문 바로가기

Java 오류 & 개발/Java 기본 문법 & 오류

[Java] NullPointerException 발생 원인과 해결 방법

📌 [Java] NullPointerException 발생 원인과 해결 방법

📌 NullPointerException이란?

NullPointerException (NPE)은 Java에서 null 값을 참조하려 할 때 발생하는 런타임 오류입니다.
이 오류는 프로그램이 비정상적으로 종료될 수 있으므로 반드시 예외 처리를 해야 합니다.


📌 NullPointerException 발생 원인

1️⃣ 객체가 초기화되지 않은 경우

설명: 객체를 선언했지만 초기화하지 않고 사용하면 NullPointerException이 발생합니다.

오류 발생 예제:


public class Main {
    public static void main(String[] args) {
        String text;
        System.out.println(text.length()); // NullPointerException 발생
    }
}

해결 방법: 변수를 선언할 때 초기화해야 합니다.


public class Main {
    public static void main(String[] args) {
        String text = "";
        System.out.println(text.length()); // 0 출력
    }
}

2️⃣ 배열 요소가 초기화되지 않은 경우

설명: 배열을 생성했지만 각 요소를 초기화하지 않으면 NullPointerException이 발생할 수 있습니다.

오류 발생 예제:


public class Main {
    public static void main(String[] args) {
        String[] names = new String[3];
        System.out.println(names[0].length()); // NullPointerException 발생
    }
}

해결 방법: 배열의 요소를 명시적으로 초기화합니다.


public class Main {
    public static void main(String[] args) {
        String[] names = {"Alice", "Bob", "Charlie"};
        System.out.println(names[0].length()); // 정상 실행
    }
}

3️⃣ 객체의 메서드를 호출할 때 null을 참조하는 경우

설명: null 객체에서 메서드를 호출하면 오류가 발생합니다.

오류 발생 예제:


public class Main {
    public static void main(String[] args) {
        Person person = null;
        System.out.println(person.getName()); // NullPointerException 발생
    }
}

해결 방법: 객체가 null인지 확인 후 메서드를 호출합니다.


public class Main {
    public static void main(String[] args) {
        Person person = new Person("Alice");
        if (person != null) {
            System.out.println(person.getName()); // 정상 실행
        }
    }
}

4️⃣ Optional을 활용한 NullPointerException 방지

설명: Java 8부터 Optional 클래스를 사용하면 null 값을 안전하게 처리할 수 있습니다.

예제:


import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        Optional optionalText = Optional.ofNullable(null);
        System.out.println(optionalText.orElse("Default Value")); // "Default Value" 출력
    }
}

📌 NullPointerException 예방법 요약

  • 객체를 사용할 때 항상 초기화
  • null 여부를 확인한 후 메서드 호출
  • 배열의 요소를 명확하게 초기화
  • Java 8 이상에서는 Optional 사용

🔍 결론

NullPointerException은 Java 개발에서 매우 자주 발생하는 오류입니다.
하지만 위 해결 방법을 적용하면 안정적인 코드 작성이 가능합니다! 🚀


📌 더 많은 Java 오류 해결법이 궁금하다면?

📌 다른 Java 오류 해결 가이드도 함께 확인해보세요!