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

자바(Java)에서 형변환(Type Casting)

lmkfox · 2025-06-22 · 조회 0
자바(Java)에서 형변환(Type Casting)
1. 자동 형변환 (Implicit Casting) 정의 작은 데이터 타입에서 큰 데이터 타입으로의 변환은 자동으로 수행됩니다. 이는 데이터 손실 위험이 없기 때문에 자바가 암묵적으로 허용합니다. 예시 int a = 100; long b = a; // int → long (자동 형변환) float f = 3.14f; double d = f; // float → double (자동 형변환) 자동 형변환 가능 순서 byte → short → int → long → float → double ↑ char char는 정수형인 int로 자동 형변환됩니다. char ch = 'A'; int code = ch; // 65로 변환됨 2. 강제 형변환 (Explicit Casting) 정의 큰 데이터 타입을 작은 데이터 타입으로 변환할 때는 데이터 손실 가능성이 있기 때문에 명시적으로 형변환을 지정해야 합니다. 문법 타입 변수 = (타입) 값; 예시 double d = 3.14; int i = (int) d; // 3 (소수점 버려짐) long l = 1000L; short s = (short) l; 데이터 손실 예시 int x = 128; byte b = (byte) x; // 결과: -128 (오버플로우 발생) 3. 형변환과 연산 자바에서 두 개의 서로 다른 타입을 연산할 경우, 자동으로 더 큰 타입으로 변환된 후 연산이 수행됩니다. int a = 10; double b = 5.5; double result = a + b; // a가 자동으로 double로 변환 또한, 정수형끼리 연산 시 결과도 정수형이므로 주의가 필요합니다. int x = 5; int y = 2; double avg = x / y; // 결과: 2.0이 아닌 2.0 (정수 나눗셈) 해결하려면 하나를 double로 형변환해야 합니다: double avg = (double) x / y; // 결과: 2.5 4. 참조형 타입의 형변환 (업캐스팅 / 다운캐스팅) 업캐스팅 (자동) 하위 클래스 → 상위 클래스 변환은 자동으로 수행됩니다. Dog dog = new Dog(); Animal a = dog; // 업캐스팅 (자동) 다운캐스팅 (명시적) 상위 클래스 → 하위 클래스 변환은 명시적 형변환 필요하며, 실제 객체 타입이 일치해야 함. Animal a = new Dog(); Dog d = (Dog) a; // 다운캐스팅 (명시적) 실제 타입이 다르면 ClassCastException이 발생합니다. Animal a = new Cat(); Dog d = (Dog) a; // 런타임 오류 발생 안전한 다운캐스팅은 instanceof 연산자를 활용합니다: if (a instanceof Dog) { Dog d = (Dog) a; } 5. 문자열과 숫자 간의 형변환 숫자 → 문자열 int n = 100; String s = String.valueOf(n); 또는 String s = n + ""; 문자열 → 숫자 int i = Integer.parseInt("123"); double d = Double.parseDouble("3.14"); 변환 실패 시 NumberFormatException이 발생할 수 있으므로 예외 처리를 함께 사용하는 것이 좋습니다. 6. 형변환 관련 클래스 클래스 기능 Integer, Double 등 문자열 ↔ 기본형 형변환 지원 String.valueOf() 어떤 타입이든 문자열로 변환 parseInt, parseDouble 문자열을 숫자로 변환 결론 요약 구분 설명 자동 형변환 작은 타입 → 큰 타입, 손실 없음 강제 형변환 큰 타입 → 작은 타입, 손실 가능성 존재 참조형 변환 업캐스팅은 자동, 다운캐스팅은 명시 필요 연산 시 변환 더 큰 타입으로 자동 형변환 후 연산 문자열 변환 valueOf, parseXxx 등 메서드 활용

댓글

아직 댓글이 없습니다.

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