본문 바로가기
스터디/JAVA

[JAVA] Primitive Type 과 Wrapper Class

by zoodi 2021. 8. 15.
728x90

💡기본형과 참조형

JAVA의 변수는 기본적으로 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있다.

기본형으로는 short, int, long, float, double, byte, char, boolean 으로 8가지가 있다.

 

1. 기본형(Primitive Type)

- 모두 첫 글자가 소문자

- 산술 연산이 가능하다.

- Null로 초기화 할 수 없다.

 

2. 참조형(Wrapper Class)

- 모두 첫 글자가 대문자

- 산술 연산 불가능

- Null 사용이 가능하다.

- DB와 연결시 DTO 객체에 Null이 필요한 경우 사용할 수 있다.

 

primitive type과 wrapper class

기본형은 변수의 값을 그대로 저장한다.

참조형은 객체의 레퍼런스를 저장한다.

참조형에는 객체가 할당되어야하는데 기본형과 달리 그 사이즈가 유동적이라서 Heap 영역에 별도 메모리공간을 차지하고 그곳에 할당한 뒤 변수에는 해당 Heap 영역의 주소값을 가리키게 된다.

 

💡그렇다면 메모리를 더 차지하는 Wrapper Class는 언제 사용할까?

기본형이 때때로 객체로 취급해야할 때가있는데 이때 Wrapper Class를 사용한다.

 

1. 매개변수로 객체가 요구 될때.

2. 기본형 값이 아닌 객체로 저장해야 할 때.

3. 객체간의 비교가 필요할 때

 

위와 같은 상황일 때 Wrapper Class를 사용한다. 

 

문자를 숫자로 바꿀 경우 아래와 같이 사용한다.

int i = Integer.parseInt("100");

Integer i = Integer.valueOf("100")

 

첫번째의 경우는 문자열 -> 기본형

두번째의 경우는 문자열 -> Wrapper class 로 변환하는 경우이다.

 

💡Boxing 과 UnBoxing

1. Boxing

Primitive 자료형 -> Wrapper 클래스

기본형을 래퍼 클래스로 변환한다.

int num= 30;

Integer wrapper_num = new Integer(num);

 

2. Unboxing

Wrapper 클래스 -> Primitive 자료형

래퍼클래스를 기본형으로 변환한다.

Integer wrapper_num = new Integer(30);
int num= wrapper_num.intValue();

여기서!!!!

Integer obj = new Integer(30); 아니라

Integer obj =30;로 해도 30 정수가 자동으로 박스에 담긴다.

어떻게 자동으로 저장이될까???!!!!

 

💡AutoBoxing 과 AutoUnBoxing

이 부분은 JDK 1.5에서 부터 오토박싱과 오토언박싱이 지원되기 때문이다.

오토박싱과 언박싱 덕분에 기본형 <-> Wrapper Class를 자유롭게 오갈수 있게 되었다.

 

1. AutoBoxing

int num = 30;
Integer obj = num;

Integer object를 생성 후 num을 n에 대입할 수 있었지만 AutoBoxing으로 인해 자동으로 객체에 값을 대입할 수 있다.

 

2. AutoUnBoxing

Integer obj = 30;
int n = obj;

Interger의 값을 int로 가져오기 위해서는 int n = obj.valueOf( ); 으로 가져왔어야했지만 int 자료형에 바로 대입할 수 있다.

 

*주의 : AutoBoxing 과 AutoUnBoxing은 기본형과 상응하는 wrapper class 사이에서만 일어난다.

int <-> double (X)  , int <-> Integer (O)

 


참고:

https://jusungpark.tistory.com/17

 

래퍼 클래스(wrapper class)

자바는 기본형(primitive type), 참조형(reference type) 으로 나뉘는 것은 모두가 아는 사실. 자바를 공부했다 해도 wrapper class가 뭔지 모르는 사람이 은근히?! 있음.. 그래서 오늘은 참조형(reference typ..

jusungpark.tistory.com

https://wakestand.tistory.com/184

 

자바 Primitive Type, Wrapper Class 사용이유

자바에서는 원시 타입(Primitive Type), 래퍼 클래스(Wrapper Class)라는 말이 있는데 래퍼 클래스는 원시 타입을 객체화한 것으로 자바 객체화(인스턴스화) 알아보기 위 스크린샷을 보면 ObjectTest 클래스

wakestand.tistory.com

parseInt 와 intValue 차이 : https://java119.tistory.com/30

728x90

댓글