● 자동 타입 변환
다음과 같이 치환문(=)이나 수식 내에서 타입이 일치하지 않을 떄, 컴파일러는 작은 타입을 큰 타입으로 자동 변환한다.
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)이라고도 부른다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[수치계산] 학생 점수 프로그램 (0) | 2018.09.13 |
---|---|
[수치계산] 음료 주문 프로그램 (0) | 2018.09.13 |
[Java] 소수의 개수 구하기 (2) | 2018.09.13 |
[Java] 오버로딩과 오버라이딩 (0) | 2017.10.01 |
[Java] 자바의 특징 (0) | 2017.10.01 |