[Java] Integer를 사용하면 왜 NullPointerException이 발생하지 않을까?

Jeini·2023년 6월 6일
0

📌 TIP

목록 보기
6/6
post-thumbnail

💡 AutoBoxing


✔️ 자바 5부터 도입된 기능으로, 기본 타입과 해당하는 래퍼 클래스 사이의 자동 변환을 지원

Java에서 Integer를 사용할 때 NullPointerException이 발생하지 않는 이유는 자바의 오토박싱과 관련이 있다.

예를 들어, int 값을 Integer 객체에 대입하면 자동으로 int 값이 Integer 객체로 변환된다.

int number = 10;
Integer integer = number; // 오토박싱: int를 Integer로 자동 변환

💡 null을 Integer에 대입


Integer integer = null;
int value = integer.intValue(); // NullPointerException이 발생하지 않음

이 때, nullInteger 에 대입하면 NullPointerException이 발생하지 않는다.

null 은 어떤 객체에 대한 참조가 없음을 나타내는 값으로 간주되며, Integer 변수에 null 을 대입하면 그냥 null 을 가리키는 참조로 설정된다.

null 참조는 객체가 아니기 때문에 객체의 메서드를 호출하려고 할 때 NullPointerException이 발생하지 않는다.

단지 null 을 가리키는 참조로 설정된 Integer 객체의 메서드를 호출하면, 해당 메서드에서 null 에 대한 처리를 담당하는 코드가 내부적으로 구현되어 있기 때문에 NullPointerException이 발생하지 않는다.

⭐️ 결론


Integer로 사용하면 값이 없는 경우에는 null을 전달할 수 있다. 이는 Integer가 참조 타입으로 null을 허용하기 때문이다. 따라서 NullPointerException 이 발생하지 않는다.

profile
Fill in my own colorful colors🎨

0개의 댓글