변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 의미
서로 다른 타입의 연산이나 대입 시, 형변환을 통해 타입을 일치시켜주어야 함. 하지만 편의상 형변환을 생략할 수 있는데, 이 때 JAVA 컴파일러가 자동으로 타입을 변환.
단, 변수가 저장할 수 있는 값의 범위보다 작은 값을 저장할 경우에만 묵시적 형변환이 이루어짐.
// int + float => 둘 중 값의 범위가 더 큰 float으로 형변환이 자동으로 이루어짐
// float + float => float
int a = 256;
double b = 10.0;
System.out.println(a+b); // 266.0
// 값의 범위가 더 큰 int 변수를 byte에 저장하려는 경우,
// 묵시적 형변환이 이루어지지 않고 에러 발생
int c = 256;
byte d = c; // 에러 발생(byte 범위를 벗어남)
형변환 연산자(캐스트 연산자)를 통해 명시적으로 형변환이 가능
단, 자료형의 범위를 초과하는 값이 할당된 경우 값의 손실이 발생될 수 있음
int a = 1000;
byte b = (byte) a; // -24
// byte 타입은 값의 범위가 -256~255로, 1000을 할당 시 범위를 초과하게 됨.
// 255+1의 결과는 int 타입에서는 256이지만, byte 타입에서는 -256이 됨.