반응형
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> 와 같은 컬렉션 프레임워크에서 흔히 활용된다.
간단한 코드에서는 당연하게 사용하지만,
방대한 코드 작성 시에는 메모리나 성능, 기능적 요소를 고려해야 한다.
이러한 상황에 닥쳤을 때 비로소 이유를 고민하기보다, 미리 원리를 이해하고 사용하면 더 효율적일 것이다.
반응형
'JAVA' 카테고리의 다른 글
[ Java ] 자료형 변환 비교 parseInt VS valueOf (2) | 2025.02.28 |
---|---|
[ JAVA ] 문자열 자르기 Splite VS StringTokenizer (5) | 2024.12.20 |
[ JAVA ] JDK & Visual Studio 설치 및 환경 변수 설정 (1) | 2024.11.28 |
[ JAVA ] System.out VS System.err (0) | 2024.11.18 |