형변환(Type Conversion): 데이터 타입을 변경하는 것
예 1) int → double로 변환
예 2) int → float로 변환
실수 데이터형: float, double (저장할 수 있는 범위: float < double)
int 타입의 정수 200와 float 타입의 실수 200.0의 bit값은 다르다.
데이터 형식이 다른 데이터들을 연산하기 위해 한쪽의 데이터 타입을 다른 쪽의 데이터 타입으로 전환(conversion) 해야한다.
자동 형 변환((implicit Conversion): 저장량이 상대적으로 좁은 데이터 타입에서 넓은 데이터 타입으로 변환할 때 허용된다.
double a = 3.0F
float a = 3.0
double형을 상대적으로 더 적은 데이터 양을 저장할 수 있는 float형으로 전환하면 데이터를 유실할 가능성이 있기 때문에 자동 형 변환이 되지 않는다.
반대로 float형을 double형으로 저장하면 더 많은 데이터 양을 저장할 수 있기 때문에 자동 형변환이 가능하다.
정방향: 자동 형 변환 가능
역방향: 자동 형 변환 불가
문자형인 character는 내부적으로 숫자다. char를 int로 형 변환하면 문자의 유니코드 값으로 변환 된다.
int a = 3; // 3.0
float b = 1.0F;
double c = a + b; //3.0F + 1.0F = 4.0F
변수 a는 int(정수)형이고 변수 b는 float(실수)형이다. double형에서 a는 int형에서 float형으로 자동 형 변환 된다. 정수는 실수로 변환할 수 있고 실수는 정수로 변환할 수 없기 때문이다. 따라서 형변환 되어 연산된 4.0F 값은 double형으로 형변환 되어 4.0으로 저장 된다.
명시적 형 변환(explict conversion): 자동 형 변환이 적용되지 않는 경우에 수동으로 형 변환을 해야 한다.
(데이터 타입)데이터 값을 입력하여 명시적 형 변환 한다.
float a = 100.0; //error
int b = 100.0; //error
float a = (float)100.0;
int b = (int)100.0F;
예 1) double → float로 변환: 넓은 범위에서 좁은 범위로 변환하므로 데이터 손실되므로 error가 발생한다.
예 2) 실수 → int로 변환: 소수점 이하의 정보가 손실 되므로 error가 발생한다.
<생활코딩! 자바 프로그래밍 입문 책>을 통해 개념을 정리한 포스팅입니다.