오늘은 NullPointerException에 대해서 자세히 알아보자
코드를 작성할 때마다 NullPointertException이 자주 떠서 오늘은 자세하게
파해처보려고 한다.
먼저 null에 대해서 알아보도록 하자.
null이란? null은 참조값이 없다는 것을 의미한다. 쉽게 말해서
이름 그대로 null을 가르키다(pointer)를 의미하는데, 이때 발생하는 예외(exception)이다. null은 없다는 뜻이므로 결국 주소가 없는 곳을 찾아갈 때 발생하는 예외이다.
객체(인스턴스)를 참조할 때는 .(dot)을 사용하는데 이렇게 하면 참조값을 이용해서 해당 객체를 찾아갈 수 있다. 근데 참조하는 값이 없으면 null 즉. 값이 없다는 뜻이찾아갈 수 있는 객체(인스턴스)가 없다는 것이다.
다음 코드를 보면서 확인해보자.
package nullpointer;
public class NullMain {
public static void main(String[] args) {
Data data = null;
data.value = 10; // NullPointerException 예외 발생
System.out.println("data = " + data.value);
}
}
앞서서 자바의 변수는 항상 값을 복사해서 대입한다는 것을 명심하고 코드를 분석해보자.
data.value = 10;이라고 적혀있는 부분을 해석해보면
null.value가 되므로 참조할 수 있는 주소가 존재하지 않으므로 NullPointerException에러가 뜨는 것이다.
위 코드를 해결해보면 Data인스턴스를 만들어 주면 된다.
package nullpointer;
public class NullMain {
public static void main(String[] args) {
Data data = new Data(); // 참조값이 생성되고 data에 저장한다.
data.value = 10; // NullPointerException 예외 문제 해결
System.out.println("data = " + data.value);
}
}