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

자바 형변환(Type Casting)

lmkfox · 2025-06-30 · 조회 0
자바 형변환(Type Casting)
1. 기본형(Primitive Type)의 형변환 기본형 간의 형변환은 자동 형변환(묵시적)과 강제 형변환(명시적)으로 나뉩니다. 1.1 자동 형변환 (묵시적 변환) 작은 크기의 타입에서 큰 크기의 타입으로 변환할 때 자바가 자동으로 수행합니다. | byte → short → int → long → float → double | | char → int → long → float → double         | 예시: int i = 100; long l = i; // int → long (자동 형변환) float f = l; // long → float (자동 형변환) 1.2 강제 형변환 (명시적 변환) 큰 타입을 작은 타입으로 변환할 때는 데이터 손실 가능성이 있기 때문에 명시적으로 형변환을 지정해야 합니다. double d = 9.78; int i = (int) d; // double → int (소수점 이하 제거됨) 형변환 예시 byte b = 10; int i = b; // 자동 형변환 int x = 130; byte y = (byte) x; // 강제 형변환: 오버플로우 발생 가능 2. 정수형과 실수형 간 형변환 int i = 10; double d = i; // 자동 형변환: 10 → 10.0 double d2 = 9.99; int i2 = (int) d2; // 강제 형변환: 9.99 → 9 3. char와 int 간 형변환 char는 내부적으로 유니코드 정수로 처리되므로 int와의 형변환이 자주 사용됩니다. char c = 'A'; int code = c; // char → int : 65 int i = 66; char ch = (char) i; // int → char : 'B' 4. boolean은 형변환 불가 boolean 타입은 다른 기본형 타입과 형변환이 불가능합니다. boolean flag = true; int num = (int) flag; // 오류 발생 5. 참조형(Reference Type)의 형변환 참조형은 상속 관계에 따라 형변환이 가능합니다. 5.1 업캐스팅 (Upcasting) 자식 클래스 → 부모 클래스 자동으로 변환됩니다. class Animal {} class Dog extends Animal {} Dog d = new Dog(); Animal a = d; // 자동 형변환 (업캐스팅) 5.2 다운캐스팅 (Downcasting) 부모 클래스 → 자식 클래스 명시적인 형변환이 필요하며, 실행 시 오류 가능성이 있습니다. Animal a = new Dog(); Dog d = (Dog) a; // 명시적 형변환 (정상) Animal a2 = new Animal(); Dog d2 = (Dog) a2; // 실행 시 ClassCastException 발생 다운캐스팅 전에 instanceof 연산자를 통해 타입을 확인하는 것이 좋습니다. if (a2 instanceof Dog) { Dog d2 = (Dog) a2; } 6. Wrapper 클래스 형변환 래퍼 클래스 간에는 valueOf, parse, xxxValue() 메서드를 사용하여 형변환합니다. String str = "123"; int num = Integer.parseInt(str); // 문자열 → 정수 double d = 3.14; int i = (int) d; // double → int Integer boxed = Integer.valueOf(100); // int → Integer int unboxed = boxed.intValue(); // Integer → int 7. 자동 박싱(Auto-Boxing)과 언박싱(Auto-Unboxing) 기본형과 래퍼 클래스 간의 변환은 자동으로 일어납니다 (Java 5 이상). Integer i = 10; // int → Integer (Auto-boxing) int n = i; // Integer → int (Auto-unboxing) 8. 형변환 관련 주의사항 - 데이터 손실 주의: 큰 타입에서 작은 타입으로 형변환할 때 값 손실 또는 오버플로우가 발생할 수 있습니다. - 문자와 숫자 구분: '1' (char)과 1 (int)은 다르며, 형변환 시 유의해야 합니다. - 참조형 변환 시 예외 발생 가능: 잘못된 다운캐스팅은 ClassCastException을 발생시킵니다. - boolean은 다른 타입과 변환 불가: 예외적인 존재로 별도 취급됩니다. 마무리 요약 형변환 종류 변환 방향 필요 여부 예시 자동 형변환 작은 타입 → 큰 타입 자동 int → long, float → double 강제 형변환 큰 타입 → 작은 타입 명시적 필요 (int) 3.14, (byte) 130 업캐스팅 자식 → 부모 클래스 자동 Dog → Animal 다운캐스팅 부모 → 자식 클래스 명시적 필요 (Dog) animal 박싱/언박싱 기본형 ↔ 래퍼 클래스 자동 int ↔ Integer

댓글

아직 댓글이 없습니다.

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