Java

Java - 형변환 (부제: 변수와 상수의 데이터 타입 불일치 시에 형변환이 일어나는 것에 대해서~ 자동 형 변환과 수동 형 변환의 방법을 알아보자)

얄루몬 2021. 5. 14. 14:32

 


자바에서 가장 기본적으로 다루는 것 = 데이터 

형 변환(type Conversion) 데이터타입을 필요에 따라서 변환 시키는 것을 의미한다.

자동형변환 = 자바는 형변환을 자동으로 처리해 주는데 이러한 전환작업을 자동(암시적) 형 변환(implicit Conversion)이라고 부른다.


<자동형변환 가능>

double a = 3.0F;

변수 - double형

상수 - float형

그러나 자동으로 자바가 상수를 double형으로 인식시켜준다. 

float < double 


<자동형변환 불가능>

float a = 3.0;

변수 - float형

상수 - double형

더 많은 데이터를 표현하는 double이라는 형을 더 적은 데이터를 표현하는 float으로 표현하게 될 땐 데이터 손실이 올 수 있기 때문에 이는 불가하다.


※ 자동형변환의 경우엔 더 많은 데이터를 표현할 수 있는 경우가 더 적은 표현 경우를 담는 것은 가능하지만 그 반대의 경우라면 불가하다. 

암시적형변환(자동형변환) = 데이터의 손실이 없는 경우라면 자바 개발환경에서 자동으로 형을 변환시켜주는 것을 의미한다. 이와 반대되는 개념으로는 명시적형변환 즉, 사용자가 수동으로 형을 변환하는 방법이 있다. 




<자동형변환 에러사례>

 float a = 100.0;
 int b = 100.0F;

실수의 디폴터 값은 double형이기 때문에 데이터 포함크기가 float <  double인 경우를 고려해서 자동형변환이 안 되게 되어서 에러가 뜨게 된다.  또한 아래는 정수형 변수와 실수형 상수이기 때문에 오류가 난다.

이런 경우 수동 형 변환을 해주어야 한다.

float a = (float)100.0;
int b = (int)100.0F

주의 !!! (int)100.1F를 넣게 된다면 100이 저장이 된다. 소숫점은 손실이 된다는 의미이다.