JAVA

[ JAVA ] Integer VS Int 차이 ( 기본 자료형 VS 래퍼 클래스 )

anycoding 2025. 1. 8. 19:37
반응형
Integer와 Int 같은 정수형을 나타내는 자료형으로 볼 수 있다.
하지만 이는 객체와 기본형으로 다르게 같지만서도 다르다.
이번에는 그 차이를 알아보자.

1. primitive type ( 기본형 )

  • 값 자체를 스택 메모리에 직접 저장하는 Primitive 즉, 원시적인 자료형이다. 
  • 별도의 정의가 필요없이 사용할 수 있으며 고정된 크기를 차지한다.
  • 메소드를 사용할 수 없으며 값을 직접 저장하기 때문에 null 을 저장할 수 없습니다.
자료형 데이터 형태 메모리 크기 표현 가능 범위
boolean 논리형 1byte true / false
char 문자형 2byte 유니코드
byte 정수형 1byte -128 ~ 127
short 2byte -32,768 ~ 32,767
int 4byte -2,147,483,648
~ 2,147,483,647
long 8byte -9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807
float 실수형 4byte ±3.40282347E+38
(7자리 유효숫자)
double 1byte ±1.79769313486231570E+308
(15자리 유효숫자)

 

2. Wrapper Class ( 객체형 )

  • 값은 힙 메모리에 객체에 저장되고, 스택 메모리는 그 객체를 가리키는 주소값을 저장한다.
  • 참조형 데이터이기 때문에 추가적인 메모리가 소모된다.
  • 기본 상태는 null로 초기화 된다.
Wrapper Class 자료형
Boolean boolean
Character char
Byte byte
Short short
Integer int
Long long
Float float
Double double

 

3. 메모리 구조 예시 ( 정수 )

다음과 같은 코드를 적용할 때 그림과 같이 메모리에 할당된다.

int num = 10;
Integer num = Integer.valueOf(num);

 


차이점 요약

특징 Primitive Type Wrapper Class
저장 위치 스택 힙 + 스택
메모리 사용량 고정적 더 많은 메모리 필요
속도 비교적 빠름 비교적 느림
null 허용 불가능 가능
객체 메서드, 컬렉션 사용 여부 불가능 가능

 

 

Wrapper Class는 제네릭 형태로 자주 사용되며,
특히 List<Integer> 와 같은 컬렉션 프레임워크에서 흔히 활용된다.
간단한 코드에서는 당연하게 사용하지만,
방대한 코드 작성 시에는 메모리나 성능, 기능적 요소를 고려해야 한다.
이러한 상황에 닥쳤을 때 비로소 이유를 고민하기보다, 미리 원리를 이해하고 사용하면 더 효율적일 것이다.

 

반응형