public class exam01 {
public static void main(String[] args) {
byte a = 127; // byte가 가질 수 있는 최댓값
int b = a; // 자동형변환(byte -> int)
System.out.println(b);
float c = b; // 자동형변환 (int -> float)
System.out.println(c);
}
}
public class exam02 {
public static void main(String[] args) {
int a = 263;
System.out.println(a);
byte b = (byte) a; // 명시적 형변환
System.out.println(b);
}
}
✅ 자동 형변환 조건
- 작은 자료형 → 큰 자료형으로 갈 때 (작은 바이트 → 큰 바이트)
- 예: byte → int, int → long, int → float
- 즉, 값을 저장할 수 있는 범위가 더 넓은 타입으로 바뀔 때
- 정수형 → 실수형으로 갈 때
- 예: int → float, long → double
- 정수보다 실수가 더 많은 값을 표현할 수 있어서 자동으로 바뀜
✅ 자바 형변환 비교표
구분 | 자동 형변환 (묵시적) | 강제 형변환 (명시적) |
변환 방향 | 작은 자료형 → 큰 자료형 | 큰 자료형 → 작은 자료형 |
변환 방법 | 자바가 자동으로 변환 | 개발자가 직접 (타입)을 써서 변환 |
데이터 손실 여부 | 거의 없음 | 있을 수 있음 (값 잘림, 정밀도 손실 등) |
예시 | int a = 10; float b = a; | float a = 3.14f; int b = (int)a; |
필요한 키워드 | 없음 | (타입)을 앞에 붙임 |