Language

[Java] 형 변환

Jintiago 2022. 3. 7. 20:40

1. 자동 형 변환

 

int형 정수와 double형 실수를 더하고 싶다면 형을 변환시켜야 한다.

자료형이 다른 두 값을 대상으로는 덧셈을 수행할 수 없기 때문이다.

그러나 덧셈이 잘 수행되었다.

위에서 자료형이 다름에도 연산이 정상적으로 된 이유는 num1에 저장된 값을 long으로 변환하여 메모리에 임시 저장 후 num2와의 연산을 수행하는 '자동 형 변환'이 일어나기 때문이다.

 

이에는 규칙이 있다.

1) 자료형의 크기가 큰 방향으로 형 변환이 일어난다.

2) 자료형의 크기에 관계없이 정수 자료형보다 실수 자료형이 우선한다.

> 정수형을 실수형으로 변환하면 오차는 존재하겠지만 데이터 손실은 일어나지 않음

 

byte > short > int > long > float > double 

문자 자료형은 int로 변환되어 위에 끼어 들어갈 수 있다.

 

 

2. 명시적 형 변환

 

자동 형 변환이 진행되지 않는 상황에서도 필요하다면 이를 통해 형 변환을 할 수 있다.

 

double > int 형 변환하여 새로운 변수에 저장

다만, 데이터의 크기가 큰 것을 작은 크기로 변환할 때에는 상위 byte가 잘려나가고, 알 수 없는 값으로 변환되므로 주의를 요한다.

 

랜덤값으로 변환되었다.

 

명시적 형 변환이 필요한 경우는 다음 예와 같은 상황이다.

 

에러 발생

컴퓨터는 덧셈을 위해 num1과 num2에 저장된 값을 int로 변환 후 계산한다.

그리고 그 값을 num3에 저장하려고 했는데, num3은 short고 결과값은 int이기에 오류가 발생하는 것이다.

이 때 다음과 같은 명시적 형 변환을 통해 오류를 해결할 수 있다.

 

결과값