Java의 자료형과 크기
Java에서 변수와 자료형, 형변환, 진수 체계를 정확히 이해하면 코드의 안정성과 가독성을 높일 수 있습니다.
이 글에서는 Wrapper Class를 통한 자료형 정보 확인, 형변환 종류, 진수 체계까지 한 번에 정리합니다.
Java 기본 자료형과 Wrapper Class
Java의 기본 자료형(primitive type) 은 각각 대응하는 래퍼 클래스(Wrapper Class)가 있습니다.
래퍼 클래스는 해당 자료형의 크기, 최댓값, 최솟값 등을 제공하여 프로그래밍에 활용할 수 있습니다.
Wrapper Class 예시
| 기본형 | 래퍼 클래스 | 크기(bit) | 크기(bite) | 최소값 | 최대값 |
| byte | Byte | 8 | 1 | -128 | 127 |
| short | Short | 16 | 2 | -32,768 | 32,767 |
| int | Integer | 32 | 4 | -2,147,483,648 | 2,147,483,647 |
| long | Long | 64 | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
| float | Float | 32 | 4 | -3.4E38 | 3.4E38 |
| double | Double | 64 | 8 | -1.7E308 | 1.7E308 |
| char | Character | 16 | 2 | '\u0000' | 65,535 |
| boolean | Boolean | 1 (논리값) | 1 | true | false |
Wrapper Class 활용 예제
System.out.println("Integer.SIZE: " + Integer.SIZE); // 32 (비트)
System.out.println("Integer.MIN_VALUE: " + Integer.MIN_VALUE); // -2147483648
System.out.println("Integer.MAX_VALUE: " + Integer.MAX_VALUE); // 2147483647
형변환 (Casting)
형변환이란 자료형을 다른 타입으로 변환하는 것을 의미합니다.
Java는 엄격한 자료형을 요구하기 때문에 자동 변환과 강제 변환을 이해하는 것이 중요합니다.
2-1. 묵시적 형변환 (Implicit Casting)
- 작은 타입 → 큰 타입으로 변환
- 자동으로 처리, 데이터 손실 없음
int i = 500000;
long l = i; // 묵시적 형변환 (자동)
2-2. 명시적 형변환 (Explicit Casting)
- 큰 타입 → 작은 타입으로 변환
- 데이터 손실 가능, 반드시 (타입) 명시 필요
long l = 10000000000L;
int i = (int) l; // 명시적 형변환, 데이터 손실 가능
System.out.println(i); // 출력: -147483648
⚠️ 주의: 큰 값(long)을 int로 변환하면 값이 잘못 나올 수 있습니다.
자바 진수 체계
Java는 2진수, 8진수, 10진수, 16진수를 지원합니다.
예제
int decimal = 10; // 10진수
int octal = 010; // 8진수 (8)
int hex = 0x10; // 16진수 (16)
int binary = 0b1010; // 2진수 (10)
진수 규칙
- 0으로 시작 → 8진수
- 0x로 시작 → 16진수
- 0b로 시작 → 2진수
- 10진수는 0~9
- 16진수는 0~9, A~F (A=10, B=11 … F=15)
진수 변환 메서드
Integer.toBinaryString(10); // "1010"
Integer.toHexString(10); // "a"
Integer.toOctalString(10); // "12"
⚠️ 주의: 다른 진수 사용은 코드 가독성을 떨어뜨리므로, 가능하면 10진수를 기본으로 사용하세요.
참고 자료
정리
- Wrapper Class를 활용하면 자료형의 크기와 범위를 쉽게 확인 가능
- 형변환은 묵시적(자동)과 명시적(강제)으로 나뉘며, 데이터 손실 여부를 확인해야 함
- 진수 체계와 변환 메서드를 알고 있으면 진수 관련 연산과 출력이 편리함
'Programming Language > Java' 카테고리의 다른 글
| [TIL] Java 불리안, 문자형, 그리고 정적 메서드 정리 (0) | 2025.10.19 |
|---|---|
| [TIL] Java 부동소수점(float, double)과 BigDecimal 정확도 차이 이해하기 (0) | 2025.10.18 |
| [TIL] 자바(Java) 생성자(Constructor) 완벽 정리: 메소드 오버로딩과 함께 사용하는 예제 (0) | 2025.10.16 |
| [TIL] Java 객체의 상태와 캡슐화 - Setter, Getter로 배우는 OOP 기본 (0) | 2025.10.15 |
| [WIL] 자바 주간 회고 (0) | 2025.10.13 |
