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 이 발생해 포스트합니다.. ㅎㅎ;