JAVA

기본형과 래퍼 클래스(Wrapper Class)

방금시작한사람 2020. 2. 18. 14:30

자바의 기본형(Primitive type)이 있습니다.

 

boolean, char, short, int, long, float, double 입니다

 

그리고 위의 기본형을 감싼 클래스가 제공되죠

 

Boolean, Character, Short, Integer, Long, Float, Double Class 입니다.

 

Double doubleWrap = 1.2;
// Double doubleWrap = new Double(1.2); 와 같은 표현 -> new Double 은 deprecated 되었다고 합니다.
// 대신 static method로 Double.valueOf(1.2); 를 권장한다고 하네요

Double reference 에 자세히 나와있습니다

 

위의같은 경우 AutoBox에 의해서 a에 1.2 double 값이 들어갑니다.

double d = doubleWrap;
System.out.println(d);

d 에는 unboxing에 의해 1.2 가 들어갑니다.

 

만약 Double 에 Null 이 들어가 있고, 그것을 unboxing 하면 어떻게 될까요?

Double doubleWrap = null;

double d = doubleWrap;
System.out.println(id);

double d = doubleWrap; 에서 NullPointerException이 발생합니다!

 

왜냐하면 기본형은 null 이라는 값이 들어갈 수 없기 때문입니다.

 

Double 같은 Wrapper class 는 Class 이기 때문에 null 이 가능합니다...

 

Spring 에서 DB 쿼리를 보내 공연 만족도의 평균값을 조회하다가,

 

만족도에 대한 데이터가 아예 없는 경우가 있어, null 을 리턴 받았는데 ..

 

이때 Return Type을 double 했다가 NullPointerException 이 발생해 포스트합니다.. ㅎㅎ;