IT
Java 형변환(Type Casting) 완벽 가이드
1. 형변환이란?
형변환은 하나의 자료형을 다른 자료형으로 바꾸는 것을 말합니다.
Java는 정적 타입 언어이기 때문에 컴파일 타임에 변수의 타입이 정해지며, 다른 타입 간 연산이나 대입 시 형변환이 필요합니다.
2. 자바의 데이터 타입 분류
기본 자료형 (Primitive Types)
자료형
크기
설명
byte
1바이트
-128 ~ 127
short
2바이트
약 ±32,000
int
4바이트
정수 기본형
long
8바이트
큰 정수
float
4바이트
단정밀도 실수
double
8바이트
배정밀도 실수, 기본 실수형
char
2바이트
유니코드 문자
boolean
1바이트
true 또는 false
3. 형변환의 종류
1)
자동 형변환 (Implicit Casting, Widening Conversion)
-
작은 자료형 → 큰 자료형으로 변환
-
데이터 손실이 없기 때문에 Java에서 자동으로 수행됨
int num = 100;
long bigNum = num; // 자동 형변환
double d = bigNum; // 자동 형변환
자동 변환 가능 예시:
byte → short → int → long → float → double
2)
강제 형변환 (Explicit Casting, Narrowing Conversion)
-
큰 자료형 → 작은 자료형으로 변환
-
데이터 손실이 발생할 수 있기 때문에 명시적으로 형변환 해야 함
double pi = 3.14;
int intPi = (int) pi; // 강제 형변환, 결과: 3
long big = 100000L;
short s = (short) big; // 강제 형변환, 데이터 손실 가능
4. 정수 ↔ 실수 간 형변환
-
정수형을 실수형으로 바꾸면 소수점이 붙음
-
실수형을 정수형으로 바꾸면 소수점은 버림(truncation)
int a = 10;
double b = a; // 10.0
double c = 5.89;
int d = (int) c; // 5
5. 문자(char)와 숫자 간 형변환
-
char는 내부적으로 유니코드(정수) 값이기 때문에 정수와 상호 변환 가능
char ch = 'A';
int code = ch; // 65
char ch2 = (char)(code + 1); // 'B'
6. 참조형(Reference Type) 형변환
상속 구조에서의 형변환
-
업캐스팅 (Upcasting): 하위 클래스 → 상위 클래스 (자동 형변환)
-
다운캐스팅 (Downcasting): 상위 클래스 → 하위 클래스 (명시적 형변환 필요)
class Animal {}
class Dog extends Animal {}
Animal a = new Dog(); // 업캐스팅: 자동
Dog d = (Dog) a; // 다운캐스팅: 명시적
-
다운캐스팅 시 실제 객체가 해당 타입이 아니면 ClassCastException 발생
Animal a = new Animal();
Dog d = (Dog) a; // 런타임 오류 발생
instanceof 연산자 활용
if (a instanceof Dog) {
Dog d = (Dog) a;
}
7. 형변환 관련 주의사항
-
강제 형변환은 항상 값 손실 가능성 있음
-
float → int, double → int 형변환 시 소수점 버림
-
int를 byte나 short로 변환할 때 오버플로우 주의
-
참조형 캐스팅은 instanceof로 안전성 확인
-
boolean은 형변환 불가능 (숫자 ↔ boolean X)
8. 교육용 실습 예제
public class TypeCastingExample {
public static void main(String[] args) {
int i = 100;
double d = i; // 자동 형변환
System.out.println(d); // 100.0
double pi = 3.1415;
int intPi = (int) pi; // 강제 형변환
System.out.println(intPi); // 3
char c = 'Z';
int code = c; // char → int
System.out.println(code); // 90
Animal a = new Dog();
if (a instanceof Dog) {
Dog dog = (Dog) a; // 다운캐스팅 안전
System.out.println("형변환 성공");
}
}
}
9. 수업 설계 팁 (교육자용)
-
실습 위주 접근이 효과적 (특히 숫자 → 문자, 실수 → 정수)
-
오버플로우 예시를 통한 직관적 이해 유도
-
참조형 캐스팅은 상속, 다형성 수업 이후에 도입
-
System.out.println()과 디버깅 활용하여 값 변화 시각적으로 확인
요약
구분
자동 형변환
강제 형변환
대상
작은 타입 → 큰 타입
큰 타입 → 작은 타입
문법
생략 가능
(타입) 명시 필요
예외 발생
없음
데이터 손실, 런타임 오류 가능
활용 사례
정수 → 실수, 업캐스팅
실수 → 정수, 다운캐스팅
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.