본문 바로가기

Study

[JAVA/자바] 형변환 (Casting) - 강제 형변환 / 자동 형변환

형변환 (Casting)
값(Data)의 자료형을 바꾸는 것 (boolean 제외)

컴퓨터의 값 처리 원칙
- 같은 종류 자료형만 대입 가능
- 같은 종류 자료형만 계산 가능
- 계산의 결과도 같은 종류의 값이 나와야 함
=> 이러한 원칙이 지켜지지 않은 경우에 형변환이 필요함

[표현법]
자료형 변수명 = (바꿀 자료형) 값;

자동 형변환
컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환

- int(4byte) => double(8byte)
- int(4byte) => long(8byte)
- float(4byte) => double(8byte)

* 특이 케이스
- long(8byte) => float(4byte)
float형이 실수형이기 때문에 long형보다 표현 가능한 수의 범위가 더 커서 자동 형변환이 된다
- Char(2byte) <=> int(4byte)
각 문자들마다 고유한 숫자가 지정되어 있기 때문에 쌍방향으로 형변환이 가능하다
- byte 또는 short 간의 연산
byte나 short는 연산 시 무조건 int형으로 처리한다

ex) int a = 12;
double d = 3.3;
double result = a + d;
* 단, byte와 short 자료형 값의 계산 결과는 무조건 int로 처리한다

강제 형변환
값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환
강제 형변환 시 데이터 손실이 발생할 수 있음 -> 데이터의 변형, 손실을 감수하고 강제 변환

ex) double temp;
int name = (int)temp;

데이터 손실