형변환 예제(CastingTest.java)
class CastingTest {
public static void main(String[] args) {
//i = (int)l l이 int형의 범위를 넘어선다면 오류, integer형의 범위가 넘는값은 int로 Casting 안된다.
// integer형의 범위는 -2147483648 ~ 2147483647
long l=123456789;
int i=(int)l;
System.out.println("i --> " + i);
//작은데 큰것을 넣을때는 명시적으로 형변환을 해야한다.
//i = l; integer은 4바이트, long형은 8바이트 이므로 에러...
boolean bool =true;
//boolean형의 경우 int형으로 명시적으로 형변환 불가
//boolean형은 같은 자료형 이외에 다른 자료형으로의 변환이 금지된 자료형이다
//i = (int)bool;
//int형을 boolean 형으로의 형변환은 명시적으로 불가
//bool = (boolean)i;
i = 65535;
byte b = (byte)i; //65535 가 -1로 바뀜
System.out.println("b --> " + b);
//왼쪽이 작으니까 명시적 형변환 필요, 협소화
double d = 3.1313139313;
float f = (float)d;
System.out.println("f --> " + f);
//왼쪽이 크니까 컴파일러에 의한 묵시적인 형변환, 광역화
f = i;
System.out.println("i --> " + i);
}
}