Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

인사이트

AVA] NullPointerException 본문

JAVA

AVA] NullPointerException

쿰쿵 2021. 6. 17. 20:34

NullPointerException

: 주소값을 몰라서 당신이 찾으려고 하는 게 어디있는지 모르겠습니다.

 

오류메시지 

: Exception in thread "main" java.lang.NullPointerException
at com.exception.NullPointerException.main(NullPointerException.java:9)

  - "main스레드실행중에 nullpoiner예외가 발생했네요. 그 위치는 9번째 라인이예요 가서 확인해보세요"라는 의미

 

뭐가 오류가 났나 확인해보자

public class NullPointerException {

	public static void main(String[] args) {
		
		String str = null;
		System.out.println(str);	// null출력
		System.out.println(str.toString());	// 여기가 9번째 라인
	}

}

1. 왜 8번째 라인은 null값이 출력되고, 9번째 라인은 예외가 발생하는걸까?

 

str은 참조형 변수이고, 참조형 변수는 값의 대입이 아니라 주소를 가리킨다.

 

근데 str을 null로 초기화했다는 건 무슨 의미일까?

"제가 참조형 변수는 맞는데 참조할 주소는 없습니다." 라는 의미를 나타낸다

 

그럼 str을 출력하려고 했던 목적은 뭐였을까?

"주소값이 있습니까? 없으면 null을, 있다면 그 주소값을 보여주시죠!"를 하려고 했던 것이었다.

(주소값???? 배열을 담은 변수를 그대로 찍어보면 [I@212aesv]뭐 이런 비슷한 내용을 본 기억이 있을것이다.

그게 현재 내가 찍어보려고 했던 변수가 참조하고 있는 주소값이다.)

 

그래서 저렇게 당당히 null이 출력될 수 있었던 것이다.

왜? 주소값을 출력하려고 했던 거니까. 근데 주소값이 없었으니까. 없으면 주소값 대신 null이 출력되니까.

 

2. 근데 9번 라인의 경우는 조금 다르다.

참조하고 있는 곳에서 값을 출력하려고 했던 것이다.

근데 지금 참조하고 있는 값이 있는가?

없다.

그럼 값을 가져올 수 있는가?

없다.

그래서 nullPointerException예외가 발생하게 된 것이다.

"참조할 수 있는 주소가 없어서 당신이 원하는 값 또한 가져올 수 없습니다."

 

 

 

 

 

 


 

프레시 채소믹스, 500g, 1개 네떼 리코타 치즈 샐러드, 205g, 2개

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.