본문 바로가기
JAVA/기본 이론

10. Casting (형변환)

by D.O.T 2024. 7. 14.
Casting 이란?

 

자료형에서 다른 자료형으로 바꾸는 과정을 Casting(형변환)이라고 한다.

3. 자료형 포스트에서 확인할 수 있듯이 각 자료형은 변수를 선언할 때, 자료형 크기 만큼 공간을 가진다.

그리고 그 공간에 값을 넣음으로써 할당이 되는데 Casting도 같은 원리이다.

 

long a - [size = 8], int b - [size = 4] 이미 a와 b를 선언하는 순간부터 컴퓨터 메모리에는 저 공간이 할당이 된다.

이 때, b에 있는 데이터를 a에 넣어봤자 8개의 size 중 4개의 size만 사용하므로 아무 문제가 없다.

이런 원리 때문에 Casting이 되는 것이다.

 

작은 Data type 에서 큰 Data type만?

 

위 예시만 보면 크기가 더 작은 자료형에서 더 큰 자료형으로 대입할 때만 Casting이 되는 것이냐고 생각할 수 있다.

저것은 당연한 과정이라 자동으로 수행된다고 해서 자동 형변환이라고 하고 묵시적 형변환이라고도 한다. 영어로는 UpCasting 이라고 한다. 더 커졌으므로

 

하지만, 큰 Data Type에서도 작은 Data Type으로 형변환을 할 수 있는데 이것을 DownCasting 이라고 하고 강제 형변환, 명시적 형변환이라고 한다. 명시적 형변환이라고 하는 이유는 바꾼다고 명시해줘야 한다.

 

long a = Integer.MAX_VALUE;
int b = (int) a;

 

코드와 같이 어떤 자료형으로 바꿀 것인지 명시해야 한다. 다만 작은 Data Type의 경우, 한계값이 있기 때문에 이것을 초과하는 경우 OverFlow가 발생한다. OverFlow는 작은 DataType의 가장 작은 값부터 초과된 값까지 채워지는데 이 과정을 생각 조차도 하면 안된다.

 

그냥 OverFlow 자체가 문제이므로 명시적 형변환을 할 때는 제한을 확실하게 생각해두자.

'JAVA > 기본 이론' 카테고리의 다른 글

4. 입/출력 (Input/Output, I/O)  (0) 2024.02.24
9. 반복문 - while 문, do while 문  (1) 2024.02.10
8. 반복문 - for 문  (1) 2024.02.10
7. 다차원 배열 (Multi Dimensional Array)  (1) 2024.02.10
6. 배열 (Array)  (1) 2024.02.10