본문 바로가기

프로그래밍 언어/Java

[Java] 타입 변환





●  자동 타입 변환



다음과 같이 치환문(=)이나 수식 내에서 타입이 일치하지 않을 떄, 컴파일러는 작은 타입을 큰 타입으로 자동 변환한다.



long m = 25;    //리터럴 25는 int 타입으로서 long 타입으로 자동 변환 double d = 3.14 * 10;    //실수 연산을 하기 위해 10이 10.0으로 자동 변환





●  강제 타입 변환



다음과 같이 n(300)을 byte 타입(0~255 범위)으로 자동 변환하게 되면, 변수 b에 300이 저장되지 않고 44(300%256=44)가 저장되어 손실이 발생한다. 그러므로 컴파일러는 이 경우와 같이 큰 타입을 작은 타입으로 변환해야 할 때 자동 변환 대신 컴파일 오류를 발생시킨다.



long n = 300;
byte b = n;    //컴파일 오류, int 타입은 byte 타입으로 자동 변환 안 됨



만약 개발자가 손실이 발생한다는 사실을 알고도 변환하기를 원한다면, 다음과 같이 () 안에 타입을 강제로 지정해야 한다.



byte b = (byte)n;    //n을 byte 타입으로 강제 변환, b = 44




강제 타입 변환은 캐스팅(casting)이라고도 부른다.