[JAVA] NullPointerException 원인과 해결방안

iiingkeep·2025년 3월 31일

JAVA

목록 보기
3/4

📌NullPointerException


에러 발생

아래의 코드를 작성하고 실행한다면
NullPointerException
에러를 만날 수 있다.

package ref;

public class Data {
    int value;
}
package ref;

public class NullMain2 {

    public static void main(String[] args) {
        Data data = null;
        data.value = 10; // NullPointerException 예외 발생
        System.out.println("data = " + data.value);
    }
}

원인

Java에서 NullPointerException은 null 값이 할당된 객체를 참조하려 할 때 발생하는 예외이다.

Data data = null;

data 변수에는 참조값이 들어갈 수 있는데, 처음에 null로 초기화를 해주었다.

data.value = 10;

이후에 멤버 변수인 value에 10을 대입하려 한다.
이 때 data 변수가 null인 상태에서 value 멤버에 접근하려고 하기 때문에 NullPointerException이 발생한다. value 멤버에 접근하려면 data 변수에 null값이 아닌 참조값이 대입되어 있어야 한다.


해결 방안

이 문제는 다음의 방안으로 해결할 수 있다.

1. if문을 사용해 객체가 null인지 확인 후 사용하기

객체가 null일 경우를 고려하여 if 문을 사용해 객체가 null이 아닐 때만 값을 할당한다.

package ref;

public class NullMain2 {

    public static void main(String[] args) {
        Data data = null;

        if (data != null) {
            data.value = 10;
            System.out.println("data = " + data.value);
        } else {
            System.out.println("data 객체는 null입니다.");
        }
    }
}

이렇게 처리하면 data가 null인 경우 "data 객체는 null입니다." 라는 메세지를 확인할 수 있으며 null이 아닌 경우 멤버 변수에 접근해 값을 할당할 수 있다.
하지만 모든 객체를 이런식으로 검증해가며 사용할 수 없으니 필요한 경우에만 사용하는 것이 좋겠다.

2. 객체를 생성한 뒤 사용하기

data 객체를 사용하기 전에 먼저 생성해주어 참조값을 대입시킨다.

package ref;

public class NullMain2 {

    public static void main(String[] args) {
        Data data = new Data(); // 객체 생성

        data.value = 10;
        System.out.println("data = " + data.value);
    }
}

위의 코드처럼 new Data()를 통해 data 객체를 생성하면 참조값이 부여되어 null이 아니기 때문에 value 멤버변수에 접근할 수 있게 된다.




결론

Java에서 NullPointerException 예외는 객체가 null인 상태에서 객체의 멤버 변수에 접근할 때 발생한다. 이를 해결하는 방법은 객체가 null인지 확인한 후 접근하거나, 객체를 생성한 후 사용하는 것이다.

NullPointerException은 매우 흔하게 발생하는 예외이므로 항상 객체가 null일 수 있다는 점을 고려하여 코드를 작성할 필요가 있다.

profile
혁신적인 백엔드 개발자가 되고자, 기록✏️

0개의 댓글