상세 컨텐츠

본문 제목

자바 공부#1_04. 자바의 숫자 타입

카테고리 없음

by 코딩연습중 2025. 3. 26. 16:05

본문

 

사실 지금까지 정수면 int, 큰 정수면 long, 소수면 double만 썼었는데 공부하다보니 그 외의 숫자 타입들은 언제 어떻게 사용되는지를 잘 모르고 있었다는 걸 깨달았다. 그래서 해당 내용을 정리해봤다.

숫자 타입 존재 이유

 - 메모리 효율 + 범위 정확성 + 처리 속도 최적화를 위해

 

자바 숫자형 타입 요약표

타입 크기 표현 범위 기본값 특징
byte 1바이트 (8bit) -128 ~ 127 0 작은 데이터, 파일 I/O, 네트워크 패킷
short 2바이트 -32,768 ~ 32,767 0 중간 크기 정수 (옛날 시스템용)
int 4바이트 ±21억 0 ✅ 가장 일반적인 정수 타입
long 8바이트 ±9경 (2⁶³) 0L 큰 숫자 (시간, ID 등)
float 4바이트 소수점 이하 7자리 0.0f 정밀도 낮은 실수 (그래픽, 게임 등)
double 8바이트 소수점 이하 15자리 0.0d ✅ 일반적인 실수 타입 (계산용)

언제 어떤 걸 사용?

🔸 1. 정수 계열 (byte, short, int, long)

아주 작은 수, 메모리 제한 byte / short 이미지, 바이너리, 통신 프로토콜 등
대부분의 정수 연산 ✅ int 성능/표현 범위 밸런스가 좋아서 기본형
아주 큰 숫자 (id, 밀리초 시간 등) long 10자리 이상 숫자 표현 필요할 때 (System.currentTimeMillis())

🔸 2. 실수 계열 (float, double)

과학적 계산, 금융, 일반적인 소수 ✅ double 정밀도 높고 기본 실수형
그래픽, 게임, 메모리 민감 float 메모리 절약, 속도 빠름 (단 정밀도 낮음)

 

예시

나이, 수량, 카운트 int 범위 충분 + 기본형
게시글 ID, 사용자 ID long 전 세계 서비스면 수십억 건 가능성 대비
이미지 픽셀, 음성 데이터 byte 메모리 절약
지구 중력 가속도 9.8 double 정밀 실수
3D 게임 캐릭터 위치 좌표 float 성능 + 메모리 절약

주의사항: float vs double

float f = 0.1f;
double d = 0.1;

System.out.println(f == d); // ❌ false (정밀도 차이)

→ 항상 정밀한 계산이 필요한 경우 double 사용

 

그럼 int, double만 써도 되지 않나?

✔ 웬만한 경우엔 맞지만,
⛔ 대량 데이터 처리, 디바이스 프로그래밍, 수학적 정확성, 성능 최적화 상황에선
"가볍고 정확한 타입 선택"이 중요

요약

상황 추천 타입 이유

거의 모든 정수 int 기본형 + 범위 넉넉
아주 큰 정수 long ID, 시간 표현 등
소수점 계산 double 정밀도 ↑
가볍고 빠른 계산 float, byte, short 메모리/성능 최적화
정확한 타입 설계 필요에 따라 사용 과하거나 부족하지 않게 설계