int(4byte)는 double(8byte)에 담을 수 있지만 double(8byte)을 int(4byte)에 담을 수는 없다.
형 변환을 하면 가능하다. ex) n1 = (int)d1;
package ex02.ch02; public class TypeConversion { public static void main(String[] args) { int i; double f; f = 1 / 5; // 1은 정수이고 그것을 정수 5로 나누면 실수로 표현되는 값은 0.2이지만 정수는 소수점 아래의 값을 버리므로 그 값이 0이 된다. System.out.println(f); // 0.0 f = (double) 1 / 5; System.out.println(f); // 0.2 // 1과 5는 정수이지만 double로 형변환이 되었기 때문에 그 둘을 연산한 값은 실수인 0.2가 된다. i = (int) 1.7 + (int) 1.8; System.out.println(i); // 2 // 1.7과 1.8은 실수이지만 int로 형변환 되었기 때문에 소수점의 값을 버림하여 1과 1이 된다. } }
다운 캐스팅(up casting), 업 캐스팅(down casting)
package ex02; public class CastEx01 { public static void main(String[] args) { int n1 = 1; // 4byte double d1 = 1.5; // 8byte n1 = 2; d1 = n1; // up casting: 작은 것은 큰 곳에 담기 때문에 큰 것의 형태로 바뀐다. System.out.println(d1); // 2.0 n1 = (int)d1; // down casting: 큰 것을 작은 곳으로 담기 때문에 작은 것의 형태로 바뀐다. System.out.println(n1); // 2 } }
Share article