자동 형 변환이란?
a 변수가 타입이 다른 b 변수에 저장 되었을 때, a 변수의 데이터 범위가 더 작으면 자동으로 타입을 변환시켜주는 것
byte a = 127; int b = a; // b가 127의 값을 가진 int타입의 변수가 됨
※ 데이터 범위의 비교 : (작음) byte → short, char → int → long → float → double (큼)
연산식의 자동 형 변환
다른 타입끼리의 연산이 일어나면, 작은 범위의 타입이 큰 범위의 타입으로 자동 형 변환 되어 연산이 진행된다.
int a = 1; // int타입의 1이 double타입의 1.0으로 변환 double b = 1.5; double result = a + b; // 1.0 + 1.5 = 2.5;
※ 정수형 연산은 int를, 실수형 연산은 double을 기본으로 한다.
※ 정수형 연산 시에 byte, char, short은 int로 형 변환 되어 연산을 진행한다.(피연산자를 4byte 단위로 저장하기 때문)
강제(명시적) 형 변환이란?
범위가 더 큰 타입을 작은 타입으로 강제로 형 변환 하는 것.
하지만, 데이터의 손실이 발생 할 수 있다.
double dPie = 3.14; int iPie = (int)dPie; // 정수형 타입이므로 3.14의 소수점이 버려져, 3이 저장된다.
※ 타입에 따라 데이터가 손실되는 방식이 다르므로 주의!
연산식의 강제 형 변환
다른 타입끼리의 연산이 일어나면, 작은 범위의 타입이 큰 범위의 타입으로 자동 형 변환 되어 연산이 진행된다.
int a = 1; double b = 1.5; int result = a + (int)b; // 소수점이 버려져 2 = 1 + 1의 값을 가지는 연산이 된다.