본문 바로가기
캠퍼스/Java

17. 캐스팅

by Sylar 2022. 7. 28.

- 캐스팅?

     문법에 맞게 형 변환을 시켜주는 것을 캐스팅이라 한다.

     어떤 상황엔 오류가 나고 어떤상황에는 오류가 안나는데 왜 그럴까?

 

- int안에 double

업 캐스팅의 예시

 

     num에 10의 정수를 담았다. 이걸 double에 넣을때 자연스럽게 들어간다

 

     double은 8byte로 저장하고 int는 4byte로 저장하는데 왜 자연스럽게 들어가냐?

 

     간단하게 생각하면 큰 상자(double)에 작은상자 (int) 를 넣는다고 문제가 생기는건 아니다 

    

     저장하는 공간의 차이가 문제가 없다면 타입을 맞춰야 한다.  

 

     어떻게 출력되는지 보자

 

 

10.0 출력

 

     int는 실수를 담을 수 없지만, 형 변환이 일어나며 10.0으로 저장된 모습이다.

 

    오류는 났지만 별다른 조치없이 실행되는 것을 '묵시적 형변환'이라 한다

 

    그럼 반대로 넣어보자

 

-double 안에 int

int는 실수를 담을 수 없다.

     int는 4byte 정수를 담고 double은 8byte 실수를 담는다. 

 

    타입도 다를 뿐더러 저장공간의 크기 차이도 난다.

 

    그럼 타입만 다르고 저장공간의 크기가 같으면 어떨까?

 

float도 int에 담을 수 없다.

     타입이 달라도 묵시적 형변환이 일어나지 않는다.

 

     그럼 어떻게 집어넣을 수 있느냐

다운 캐스팅

 

     int 라는 박스에 double을 넣기엔 int가 너무 작다.

 

     그래서 int박스 크기에 맞게 잘라 넣어라는 명령을 내렸다. 

실수부분이 없어졌다.

 

    int 타입엔 실수를 담을 수 없으므로 20이 출력되는 모습이다.

 

    이렇게 코드로 직접 변환시켜야 하는것을 명시적 형변환 이라 한다. 

'캠퍼스 > Java' 카테고리의 다른 글

19. for  (0) 2022.07.28
18. 구구단 만들기 (1)  (0) 2022.07.28
16. 증감식  (0) 2022.07.28
15. 논리 연산자  (0) 2022.07.28
14. 변수의 선언과 초기화  (0) 2022.07.28