로그인 회원가입
모두인포
전체IT경제사회생활스포츠시사여행연애

Java 형변환(Type Casting) 완벽 가이드

lmkfox · 2025-06-05 · 조회 0
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()과 디버깅 활용하여 값 변화 시각적으로 확인 요약 구분 자동 형변환 강제 형변환 대상 작은 타입 → 큰 타입 큰 타입 → 작은 타입 문법 생략 가능 (타입) 명시 필요 예외 발생 없음 데이터 손실, 런타임 오류 가능 활용 사례 정수 → 실수, 업캐스팅 실수 → 정수, 다운캐스팅

댓글

아직 댓글이 없습니다.

로그인 후 댓글을 남길 수 있습니다.