guricode

자바에서의 자동형변환과 강제 형변환 , Implicit Casting & Explicit Casting 본문

web/java&spring

자바에서의 자동형변환과 강제 형변환 , Implicit Casting & Explicit Casting

agentrakugaki 2025. 6. 9. 15:36

형 변환이란 값의 타입을 다른 타입으로 변환하는 것이다.

예를들면

float f = 1234;

는 1234가 int타입의 상수고 변수타입은 float이다.

이런경우 서로 타입이 다르므로 

float f = (float)1234;

이렇게 우변의 타입을 변환해주어야하지만 float 타입의 변수는 1234를 저장하는데 아무런 문제가 되지 않으므로 형변환을 생략해도 된다. 이것을 자동 형변환( Implicit Casting)이라고한다.

자동형변환은 작은 자료형에서 큰 자료형 대입시 가능하다.

 

기본 자동형변환 순서

 

byte → short → int → long → float → double
              ↑
           char (→ int)

 

이 순서는 외워두자

 

 

1. 변수 대입 시

int num = 100;
long bigNum = num; // int → long 으로 자동 형변환

2. 연산 시

int a = 10;
double b = 5.5;
double result = a + b; // int + double → double + double

3. 문자 → 정수 (char → int)

char ch = 'A';
int code = ch; // 'A'는 유니코드 값 65, 자동 형변환됨
System.out.println(code); // 출력: 65

 

 

자동 형변환이 되지 않는 경우는 큰 자료형에서 작은 자료형으로 대입할때이다.

큰상자를 작은상자에 넣는것과 같다.

이런경우에는 강제 형변환(Explicit Casting)이 필요하다.(명시적케스팅)

long big = 100L; int small = (int) big; // 명시적 형변환 필요

 

 

이때 주의할 점 byte, short, char는 연산 시 자동으로 int로 승격(promoted) 된다.

 

byte b1 = 10; byte b2 = 20; // byte b3 = b1 + b2; // 에러 발생 (int로 자동 승격됨) int result = b1 + b2; // OK