말 그대로 타입을 변환하는것, 즉 변수나 *리터럴의 타입을 변환하는것이다.
자바는 타입이 다른 값들은 같은 타입으로 변환한 다음 계산하여야 하므로 주로 타입이 다른 값들을 계산하는 경우 사용된다.
컴파일러에 의해 자동으로 형변환이 이루어지는 것을 말한다.
묵시적 형변환은 위 그림처럼 표현범위가 좁은 데이터 타입에서 -> 넓은 데이터 타입으로의 변환만 허용 한다.
사용자가 직접 데이터의 타입을 변경하는것, 강제 형변환이라고도 한다.
// 사용자가 타입 캐스트 연산자 "(type)"를 사용 하여 형변환을 해준다.
int num = 10;
byte value = (byte)num;
자바에서는 데이터 손실을 방지하기 위해 기본타입에 대해 최대값과 최소값을 상수로 제공하고 있다. (boolean , char 타입 제외 )
// float // 출력 : 1.4E-45~3.4028235E38
System.out.println(Float.MIN_VALUE+"~"+Float.MAX_VALUE);
// double // 출력 : 4.9E-324~1.7976931348623157E308
System.out.println(Double.MIN_VALUE+"~"+Double.MAX_VALUE);
// byte의 범위 // 출력 : -128~127
System.out.println(Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
// short // 출력 : -32768~32767
System.out.println(Short.MIN_VALUE+"~"+Short.MAX_VALUE);
// int // 출력 : -2147483648~2147483647
System.out.println(Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
// long // 출력 : -9223372036854775808~9223372036854775807
System.out.println(Long.MIN_VALUE+"~"+Long.MAX_VALUE);
다음을 이용하여 변환전 검사를 수행하여 오버플로우현상을 방지 할수있다.
int n = 128;
if(n < Byte.MIN_VALUE || n > Byte.MAX_VALUE ){ // byte : -128~127
Syetem.out.println("Byte타입 변환 불가");
}else{
byte b = (byte)n;
}