Promotion, Type Casting
public class P6 {
public static void main(String[] args) {
int a = 10;
a = 20;
a = 30;
//a = 20.1; //타입 미스매치(중요한 표현) 오류뜸 선언한게 int기 때매 실수형은 못 들어감 정수형만 가능
double b = 20.1; // 변수명 중복 안됨
b = 30.3333;
b = 10; //타입 미스매치!
System.out.println(b);
}
}
1️⃣ Promotion (자동 변환)
✅ 작은 데이터 타입 → 큰 데이터 타입 (자동 변환)
💡 데이터 손실이 없으므로 컴파일러가 자동으로 변환해줌.
🔹 예제
public class Main {
public static void main(String[] args) {
int numInt = 10;
double numDouble = numInt; // int → double 자동 변환 (Promotion)
System.out.println(numDouble); // 출력: 10.0
}
}
✅ int → double 자동 변환!
✅ 10이 10.0으로 변환됨.
🔹 예제
public class P3 {
public static void main(String[] args) {
//char 문자형! - 사실 숫자
//사실상 프로그래밍 할대는 char은 거의 사용하지 않고
//기본타입은 아니지만 String을 사용한다.
char a = 97; //자바에선 2byte 얜 문법
System.out.println(a); //대문자 A 65
String ss = "안녕하세요"; //기본 타입은 아니다!
//문법적으로 사용한 키워드가 아님 : String API
System.out.println(ss);
}
}
✅ 97 → a | 65 → A
✅ String은 기본 타입이 아님!

이런식으로 에러 뜸
2️⃣ Casting (명시적 변환)
❌ 큰 데이터 타입 → 작은 데이터 타입 (자동 변환 불가, 명시적 변환 필요)
💡 데이터 손실 발생 가능함. (소수점 버림 등)
🔹 예제
public class Main {
public static void main(String[] args) {
double pi = 3.14;
int intPi = (int) pi; // double → int (Casting)
System.out.println(intPi); // 출력: 3 (소수점 손실)
}
}
✅ double → int 변환할 때 (int)을 붙여야 함.
❌ 소수점 이하가 버려짐(손실 발생).
3️⃣ Promotion과 Casting 비교
변환 예시변환 방식설명
| int → double | Promotion (자동 변환) | 작은 데이터 타입 → 큰 데이터 타입 |
| float → double | Promotion (자동 변환) | 작은 데이터 타입 → 큰 데이터 타입 |
| double → int | Casting (명시적 변환 필요) | 소수점 손실 가능, (int) 사용 |
| long → short | Casting (명시적 변환 필요) | 데이터 손실 가능, (short) 사용 |
📌 결론
Promotion (자동 변환)Casting (명시적 변환)
| 변환 방향 | 작은 타입 → 큰 타입 | 큰 타입 → 작은 타입 |
| 변환 방식 | 자동 변환 | (타입명)을 붙여야 함 |
| 데이터 손실 | ❌ 없음 | ✅ 가능 (소수점 손실 등) |
| 예제 | int → double | double → int (int 사용) |
🔥 즉, Promotion은 안전한 자동 변환, Casting은 데이터 손실 가능성이 있는 강제 변환!
참고
리터럴 (Literal)
- 고정된 값을 가진 데이터
- 프로그램에서 직접 사용할 수 있는 숫자, 문자, 문자열, 불리언 값 등
'중앙정보기술인재개발원 > JAVA' 카테고리의 다른 글
| [JAVA] Scanner (1) | 2025.03.17 |
|---|---|
| [2주차] 연산자 (0) | 2025.03.12 |
| [JAVA] Garbage Colletion(가비지 컬렉션) (1) | 2025.03.12 |
| 2주차 [개발 환경 세팅하기] (1) | 2025.03.10 |
| 1주차 정리 (0) | 2025.03.07 |