본문 바로가기

프로그래밍 언어/Java

Java 정수형(Integer Types) 크기, 범위, 메모리 사용 분석

Java 정수형(Integer Types) 크기, 범위, 메모리 사용 분석

Java는 다양한 데이터 크기와 메모리 요구 사항을 충족시키기 위해 네 가지 주요 정수형 타입을 제공합니다. 각각의 타입은 용도와 성능 측면에서 차별화되어 있으며, 적절한 타입 선택은 성능 최적화와 메모리 관리에 직결됩니다. 이 글에서는 byte, short, int, long의 구조적 차이, 범위, 내부 표현 방식까지 상세히 분석해보겠습니다.

 

 

목차

  1. Java 정수형 타입 개요
  2. byte: 최소 크기의 정수형
  3. short: 중간 크기의 정수형
  4. int: 가장 널리 쓰이는 기본형
  5. long: 대용량 정수 저장용
  6. 정수형 타입 간 비교
  7. 정수형 사용 시 유의사항 및 팁

 

1. Java 정수형 타입 개요

Java의 정수형(primitive integer types)은 부호가 있는 정수(signed integer)이며, 아래와 같은 네 가지 타입을 제공합니다:

  • byte: 1 byte (8비트)
  • short: 2 byte (16비트)
  • int: 4 byte (32비트)
  • long: 8 byte (64비트)

모든 타입은 2의 보수(two's complement) 방식으로 음수를 표현합니다. 이 방식은 CPU 연산 효율성과 부호 일관성을 높이는 데 효과적입니다.

 

 

 

2. byte: 최소 크기의 정수형

byte는 가장 작은 정수형으로, 메모리를 아끼는 데 유리합니다.

  • 크기: 8비트
  • 범위: -128 ~ 127
  • 주용도: 파일 I/O, 이미지 처리, 메모리 제한이 있는 디바이스
byte b = 100;
System.out.println(b);  // 출력: 100
  

 

 

 

3. short: 중간 크기의 정수형

shortbyte보다 더 큰 범위를 다루면서도 int보다 메모리 절약에 용이합니다.

  • 크기: 16비트
  • 범위: -32,768 ~ 32,767
  • 주용도: 대규모 배열 처리, 데이터 압축
short s = 32000;
System.out.println(s);  // 출력: 32000
  

 

 

 

4. int: 가장 널리 쓰이는 기본형

대부분의 경우 기본 정수형으로 int가 사용됩니다. 자바의 기본 연산은 int를 기준으로 수행됩니다.

  • 크기: 32비트
  • 범위: -2,147,483,648 ~ 2,147,483,647
  • 주용도: 일반 연산, 반복문, 인덱스 처리
int count = 1000000;
System.out.println(count);  // 출력: 1000000
  

 

 

 

 

5. long: 대용량 정수 저장용

long은 정수형 중 가장 큰 범위를 가지며, 고정 소수점 처리나 시간 계산 등에서 자주 사용됩니다.

  • 크기: 64비트
  • 범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
  • 주용도: 밀리초 단위 시간, 대형 파일 처리, 고정밀 계산
long timestamp = System.currentTimeMillis();
System.out.println(timestamp);
  

 

 

 

6. 정수형 타입 간 비교

타입 크기 범위 용도
byte 8비트 -128 ~ 127 메모리 절약
short 16비트 -32,768 ~ 32,767 중간값 처리
int 32비트 ±2.1B 기본 연산
long 64비트 ±9.2퀸틸리언 대용량 처리

 

 

 

7. 정수형 사용 시 유의사항 및 팁

  • int는 성능과 범위에서 균형 잡힌 선택입니다.
  • 정밀한 시간 계산에는 long을 사용하세요.
  • byteshort는 자동 형변환 시 int로 승격됩니다.
  • 숫자 리터럴 뒤에 L을 붙여야 long으로 인식됩니다. (예: long id = 10000000000L;)
  • 메모리 최적화가 중요한 경우 작은 타입을 적극 활용하세요.