[Java] int와 Integer의 차이

acacia·2022년 9월 27일
2

개념노트

목록 보기
5/5
post-custom-banner

오늘은 팀원에게 'int'와 'Integer'의 차이가 무엇이냐는 질문을 받았다.
질문을 듣고 생각을 해보았지만, 어떤 차이가 있더라...싶으면서 머리 속이 하얗게 뒤엉키는 느낌이었다.
그동안 개념도 모른채 여기에선 int, 여기에선 Integer 이렇게 무작정 외운채 사용해왔었던 건지 정말 개념에 대해 하나도 모르겠다는 느낌을 받았다.
그래서, 오늘은 int와 Integer의 차이를 알아보려고 한다.

int != Integer

int란?

primitive 자료형으로 변수의 타입 중 하나이다.

원시형 (primitive) 변수 : double , float , long ...등

특징

  • 산술 연산이 가능하다.
  • null로 초기화가 되지 않는다.


Integer

wrapper 클래스이다.

Java는 기본형 타입(primitive 자료형)과 객체 참조(클래스)같은 두 가지 타입의 관리 데이터를 가지고 있다.
경우에 따라 기본형 타입을 객체로 사용하는 경우가 있다.
이 때, Wrapper 클래스를 사용한다.


wrapper class : 기본형을 객체로 다루기 위해 사용하는 클래스

아래와 같은 경우 기본형을 객체로 다루기 위해 래퍼 클래스를 사용한다.
1. 매개변수로 객체를 필요로 할 때
2. 기본형 값이 아닌 객체로 저장해야 할 때
3. 객체 간 비교가 필요할 때

👉 Integer은 int의 래퍼 클래스 이다.

특징

  • Unboxing 하지 않을 시에 산술 연산이 불가능하다.

✔ boxing ?
primitive type 을 wrapper class로 변환시키는 것

✔ unboxing?
Wrapper class를 primitive type으로 변환시키는 것

  • null 값 처리가 가능하다.


int와 Integer의 형변환

int와 Integer은 아래의 방식으로 서로 변환이 가능하다.

// Integer i ->  int i  (unboxing)
int i = integer.intValue();

// int i -> Integer i ( boxing)
Integer integer = new Integer(i); 

Auto boxing / unboxing

자바에서는 모든 경우는 아니지만 대부분의 경우 자동으로 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 )

profile
게으른 개발자의 부지런한 개발일지
post-custom-banner

0개의 댓글