ㅅㅇ

Wrapper Class 이란? 본문

SW_STUDY/Java

Wrapper Class 이란?

SO__OS 2023. 6. 26. 15:17

1. Wrapper Class 이란 ?

기본 자료형(Primitive data type)에 대한 객체 표현을 Wrapper class라고 합니다.

2. Boxing 이란?

기본 자료형 → Wrapper class로 변환하는 것

3. UnBoxing

Wrapper class → 기본 자료형으로 변환하는 것

4. 기본 타입과 다른 Wrapper Class 자료형만의 특징

이 특징들을 생각하여, 왜 언제 Boxing 하는지 이해하자

  1. 불변 객체로 한 번 할당된 객체는 값이 변하지 않는다. ( 수정이나 값을 변경할 때,객체의 값을 변경하는 것이 아니라, 새로운 값의 객체를 new 생성애서 반환하는 하는 것으로 착각하지 말기 )
  2. Null 값을 받을 수 있다.
  3. toString() 메소드를 사용하여 문자열로 쉽게 변환이 가능하다.
  4. 비교 연산이 불가하다.
    cf) String의 경우
  • String은 래퍼 클래스이나, 리터럴 방식으로 생성될 시에는 비교 연산이 가능합니다. ( String a = “1000”; )
  • 객체 생성 방식의 경우엔 주소 값이 달라 == 비교가 안됩니다. ( String a = new String(“1000”) )

* 아래 링크에서 자세히 정리

5. Wrapper Class 를 사용하는 경우

- > null 이 필요한 경우


Wrapper Class 로 기본 데이터 타입을 객체로 Boxing 해주면,

객체 개념으로 데이터를 관리할 수 있고, null 값 처리가 용이하다.

 

- 주의점

Wrapper Class 데이터 값은 null을 받을 수 있다는 가능성이 생기기 때문에

사용자로부터 들어온 값이 Null 인지를 파악할 수 없다. 그래서 Null 체크 코드를 추가해줘야 해야 한다.
그래서 래퍼클래스는 Null을 꼭 다뤄야 할 때 사용하는 것이 좋다.

 

  1. DB 테이블에 null이 들어올 때
    DB 테이블에 Null이 들어갈 수 가능성이 있는 경우 사용됩니다.
    ex) DB에서 자료형이 정수형이지만 null 값이 필요할 경우 Integer를 사용
    하지만, null을 허용하지 않는 컬럼일 경우는, 기본 데이터 타입으로 지정해야 한다.
  2. request로 null이 들어올 때
    이때 또한 Requeset 들어오는 값이 Null일 수 있기에 WrapperClass로 받아 줄 수 있긴 함.
    하지만, request같은 경우에는 애초에 @Validate@NotNull같은 거로, 사전에 차단헤야 한다.
    따라서, Null을 바로바로 파악할 수 있는 (NullPointException을 발생하게 하여) 기본 타입을 잘 사용