자료구조

[자료구조] int 와 Integer 의 차이점?

lucy1215 2023. 1. 9. 17:46
728x90
반응형

백준에서 문제를 풀다가 궁금증이 생겼다.

 

정수형 배열을 선언할 때,  보통 아래 방식으로 선언했다.

int arr[] = new int[10];

 

 

하지만 문제를 제출하니 런타임에러가 떴고 찾아보니

Integer arr[] = new Integer[10];

위와 같이 선언을 해야한다는 것이었다...

 

 

약 4년 동안 int와 Integer를 항상 사용했지만 이 2개의 차이점을 알지 못하고 있었다는 것이

충격이었다. 그래서 이 포스팅을 적게 되었다....

 


1. int 란? (Primitive Type)

int는 변수의 타입 (data type)이다.

 

변수(variable)는  '값을 저장할 수 있는 메모리 상의 공간'을 의미한다.

 

int a = 3;
char firstName = 'H';

위에서 a 와 firstName 은 변수(변수명)가 되는 것이다.

 

그리고 그 앞에 적힌 int 와 char가 변수의 형을 지정해주고 있는 것이고,

변수의 타입( = data type = 자료형) 이라고 한다.

 

즉, 자료형은 'data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것' 이라고 볼 수 있다.

 

자료형은 기본형(Primitive type)과 참조형(Reference type)으로 나뉘는데, 

int 는 이 중 기본형에 속한다.

 

기본형(Primitive type)의 종류

 

 

 

2. Integer란? (Wrapper class)

Integer란 기본형을 표현해야 하는 경우가 있다.

  • 매개변수로 객체를 필요로 할 때
  • 기본형 값이 아닌 객체로 저장해야할 때
  • 객체 간 비교가 필요할 때

이런 경우 기본형을 객체로 다루기 위해 사용하는 클래스들은 래퍼 클래스(Wrapper class)라고 한다.

그리고 Integer는 int의 래퍼 클래스라고 할 수 있다.

 

래퍼 클래스(Wrapper class)의 종류

 

 

3. int와 Integer의 차이점

 

int : 자료형 (Primitive type)

  • 산술 연산 가능함
  • null로 초기화 불가

Integer : 래퍼 클래스(Wrapper class)

  • Unboxing하지 않을 시 산술 연산 불가능함
  • null값 처리 가능
더보기

boxing : primitive type → wrapper class 변환 (int to Integer)

unboxing : wrapper class → primitive type 변환 (Integer to int)

 


참고

 

int와 Integer는 무엇이 다른가

int와 Integer는 무엇이 다른가 // 기본부터 다시 시작하기

velog.io

 

반응형

'자료구조' 카테고리의 다른 글

[자료구조] 큐 Queue, 덱 Deque  (2) 2023.01.16
[자료구조] 스택 (Stack)  (0) 2023.01.06