Coding/JAVA

[JAVA]형변환(casting)

민톨이 2024. 3. 19. 21:29
728x90

📋헷갈리니까 기록해두기

 

형변환

 📍int -> long -> double 

- 작은 범위에서 큰 범위로는 대입 가능 => a.k.a 묵시적 형변환 || 자동 형변환

 

 📍 큰 범위 -> 작은 범위 대입에서 발생하는 문제 // 이 때는 명시적 형변환을 사용해야함

- 소수점 버림

- 오버플로우 

 

    +  오버플로우란?

기존 범위를 초과해서 표현하게 되면 전혀 다른 숫자가 표현되는 현상

 

 

연산 / 형변환

1. 같은 타입끼리의 계산은 같은 타입의 결과가 나온다

 - int + int = int / double + double = double

 

2.서로 다른 타입의 계산은 큰 범위로 자동 형변환이 발생

 - int + long = long + long 으로 자동 형변환 발생

 - int + double = double + double 로 자동 형변환 발생

 

예시)

int div1 = 3/2; // 1   = int / int = int
        System.out.println("div1 = " + div1);

 

double div2 = 3 / 2; int / int
double div2 = 1; // int 

double div2 = (double)1; // double에 대입. 자동 형변환 발생
double div2 = 1.0 // int 1 에서 double 1.0으로 형변환 됨

 => 정수 1을 더블로 바꾸면 1.0 됨

 

double div3 =3.0/2; // 1.5 
// double / int 이므로, double / double로 형변환 발생
double div3 = 3.0 / 2.0; // double / double = double
double div3 = 1.5;

 =>  더 큰 것으로 형변환 되는데 double이 더 크므로 double로 형변환됨

 double div4 = (double) 3/2; // 1.5   => 명시적 형변환 사용 !
 double div4 = (double) 3 / (double) 2; // double + int이므로, double + double로 형변환 발생
 double div4 = 3.0 / 2.0; // double/double = double
 double div4 = 1.5;