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 |