본문 바로가기
JAVA/자바 문법 기초 익히기

타입 캐스팅 (자동/강제 형변환)

by DEVLIB 2025. 4. 11.
728x90

타입 캐스팅(Type Casting)이란?

서로 다른 자료형 간의 변환을 말합니다.
예: int → double, double → int

왜 필요할까요?

  • 자료형이 다른 값을 함께 사용할 때 오류를 방지하기 위해
  • 더 작은 타입 → 큰 타입은 안전하지만
  • 큰 타입 → 작은 타입은 데이터 손실이 발생할 수 있어서 조심해야 해요!

1. 자동 형변환 (묵시적 변환)

작은 타입 → 큰 타입으로 자동 변환됨 (손실 없음)

작은 타입 큰 타입
int long, float, double
char int
float double

예제

int num = 10;
double result = num;  // 자동 형변환

System.out.println(result);  // 10.0

 

정수 int가 자동으로 double로 바뀜


2. 강제 형변환 (명시적 변환)

큰 타입 → 작은 타입으로 변환할 때, 데이터 손실을 감수하고 명시적으로 변환

문법

자료형 변수명 = (자료형) 변환할값;

예제

double pi = 3.14;
int num = (int) pi;

System.out.println(num);  // 3 (소수점 제거됨)

 

double을 int로 강제 변환 → 소수점 사라짐!


비교 실습 예제

public class CastingExample {
    public static void main(String[] args) {
        int i = 100;
        double d = i;  // 자동 형변환 (int → double)
        System.out.println("자동 형변환 결과: " + d);

        double pi = 3.14159;
        int n = (int) pi;  // 강제 형변환 (double → int)
        System.out.println("강제 형변환 결과: " + n);
    }
}

 

출력 결과:

 
자동 형변환 결과: 100.0  
강제 형변환 결과: 3

문자 타입 char 변환

char ch = 'A';
int code = ch;         // 자동 형변환: 문자 → 정수
System.out.println(code);  // 65 (ASCII 코드)

주의사항: 강제 형변환은 데이터 손실 주의!

int big = 1000;
byte small = (byte) big;
System.out.println(small);  // 예상치 못한 값 출력됨

 

byte는 -128 ~ 127 범위이므로 1000을 넣으면 값이 깨집니다


마무리 요약표

구분 설명 예시
자동 형변환 작은 타입 → 큰 타입 int → double
강제 형변환 큰 타입 → 작은 타입 (데이터 손실 가능) double → int
문법 (자료형) 값 (int) 3.14 → 3
LIST

'JAVA > 자바 문법 기초 익히기' 카테고리의 다른 글

산술 연산자  (0) 2025.04.12
비교 연산자  (0) 2025.04.11
변수 선언과 초기화  (0) 2025.04.11
정수, 실수, 문자, 문자열, 불리언  (0) 2025.04.11
코드 실행 흐름 익히기  (0) 2025.04.11