오늘은 팀원에게 'int'와 'Integer'의 차이가 무엇이냐는 질문을 받았다.
질문을 듣고 생각을 해보았지만, 어떤 차이가 있더라...싶으면서 머리 속이 하얗게 뒤엉키는 느낌이었다.
그동안 개념도 모른채 여기에선 int, 여기에선 Integer 이렇게 무작정 외운채 사용해왔었던 건지 정말 개념에 대해 하나도 모르겠다는 느낌을 받았다.
그래서, 오늘은 int와 Integer의 차이를 알아보려고 한다.
int != Integer
primitive 자료형으로 변수의 타입 중 하나이다.
원시형 (primitive) 변수 : double , float , long ...등
wrapper 클래스이다.
Java는 기본형 타입(primitive 자료형)과 객체 참조(클래스)같은 두 가지 타입의 관리 데이터를 가지고 있다.
경우에 따라 기본형 타입을 객체로 사용하는 경우가 있다.
이 때, Wrapper 클래스를 사용한다.
wrapper class : 기본형을 객체로 다루기 위해 사용하는 클래스
아래와 같은 경우 기본형을 객체로 다루기 위해 래퍼 클래스를 사용한다.
1. 매개변수로 객체를 필요로 할 때
2. 기본형 값이 아닌 객체로 저장해야 할 때
3. 객체 간 비교가 필요할 때
👉 Integer은 int의 래퍼 클래스
이다.
✔ boxing ?
primitive type 을 wrapper class로 변환시키는 것
✔ unboxing?
Wrapper class를 primitive type으로 변환시키는 것
int와 Integer은 아래의 방식으로 서로 변환이 가능하다.
// Integer i -> int i (unboxing)
int i = integer.intValue();
// int i -> Integer i ( boxing)
Integer integer = new Integer(i);
자바에서는 모든 경우는 아니지만 대부분의 경우 자동으로 boxing & unboxing 처리를 해준다
int i = 1;
//int -> Integer(Auto boxing)
Integer integer = i;
//Integer -> int(Auto unboxing)
int i = integer;
📚 Reference
Java 데이터 타입 Integer와 int의 차이 ( tistory | hochoon )