프로그램에서 데이터를 저장하는 메모리 공간인 **변수(Variable)**와 데이터의 종류를 규정하는 **자료형(Data Type)**의 개념을 학습합니다.
1. 변수 & 자료형 용어 사전 (Glossary)
- Primitive Type (기본 자료형): 실제 산술/논리 데이터 값을 메모리 스택 영역에 직접 보관하는 8가지 기본 데이터 타입입니다.
- Reference Type (참조 자료형): 데이터 객체의 실제 내용은 Heap 메모리에 두고, 그 주소(Address) 값만을 스택 변수에 보관하는 데이터 타입입니다. (String, Array, Class 등)
- Casting (형변환): 하나의 자료형을 다른 자료형으로 바꾸는 연산입니다. (자동 형변환 vs 강제 형변환)
- Overflow / Underflow: 표현할 수 있는 최대/최소 한계 범위를 넘어서 반대쪽 최댓값/최솟값으로 순환해버리는 오류 현상입니다.
2. 자바 8대 기본 자료형 (Primitive Data Types)
| 종류 | 타입 키워드 | 메모리 크기 | 데이터 표현 범위 및 예시 |
|---|---|---|---|
| 논리형 | boolean |
1 byte | true 또는 false |
| 문자형 | char |
2 bytes | 유니코드(Unicode) 1문자 (예: 'A', '가') |
| 정수형 | byte |
1 byte | $-128 \sim 127$ |
short |
2 bytes | $-32,768 \sim 32,767$ | |
int |
4 bytes | $-21\text{억} \sim 21\text{억}$ (기본 정수형) | |
long |
8 bytes | $-9 \times 10^{18} \sim 9 \times 10^{18}$ (리터럴 뒤 L 붙임) |
|
| 실수형 | float |
4 bytes | 소수점 약 7자리 정밀도 (리터럴 뒤 F 붙임) |
double |
8 bytes | 소수점 약 15자리 정밀도 (기본 실수형) |
3. 형변환과 연산자 실전 예제
public class DataTypeExample {
public static void main(String[] args) {
int a = 10;
double b = 3.14;
// 1. 자동 형변환 (Promotion): 작은 타입 -> 큰 타입
double result1 = a + b; // int가 double로 자동 변환 (10.0 + 3.14)
System.out.println("자동 형변환 결과: " + result1);
// 2. 강제 형변환 (Casting): 큰 타입 -> 작은 타입
int result2 = (int) b; // double 소수점이 손실되고 3만 남아 저장됨
System.out.println("강제 형변환 결과: " + result2);
// 3. 삼항 연산자 (Ternary Operator)
int score = 85;
String passStatus = (score >= 80) ? "합격" : "불합격";
System.out.println("시험 결과: " + passStatus);
}
}
4. 자주 묻는 질문 (Q&A)
Q. float f = 3.14; 라고 적으면 왜 컴파일 에러가 나나요?
A. 자바는 실수를 적으면 기본적으로 double(8바이트) 타입으로 인지합니다. 4바이트 float 변수에 넣으려면 뒤에 접미사 F를 붙여 float f = 3.14F; 로 작성해야 합니다.