"그리고 이제 가장 흥미로운 부분입니다. 유형 변환에 대해 말씀드리겠습니다. 변수는 유형을 변경할 수 없지만 유형을 변환할 수 있는 곳이 있습니다. 그 곳이 대입 연산입니다. "

"서로 다른 유형의 변수를 할당할 수 있습니다. 이렇게 하면 (특정 유형의) 한 변수의 값이 다른 유형의 값으로 변환되어 다른 변수에 할당됩니다. "

"우리는 변환의 두 가지 유형을 지적할 수 있습니다: 기본 변환 확대 및 기본 변환 축소. 확장은 작은 바구니에서 큰 바구니로 물건을 옮기는 것과 같습니다. 절차는 눈에 띄지 않고 고통이 없습니다. 축소는 큰 바구니에서 물건을 꺼내는 것과 유사합니다. 이렇게 하면 공간이 부족해 무언가를 버려야 할 수도 있습니다. "

"다음은 '바구니' 크기에 따라 정렬된 유형입니다."

유형 변환

"몇 가지 의견:

1. char 의 바스켓은 short의 바스켓과 같은 크기이지만 한 곳에서 다른 곳으로 물건을 자유롭게 옮길 수 없습니다. short 에서 char 로 값을 이동하면 0보다 작은 값은 항상 손실됩니다. 값을 char에서 short로 이동하면 32,000보다 큰 값이 손실됩니다.

2. 정수를 분수로 변환할 때 숫자의 최하위 숫자가 버려질 수 있습니다. 그러나 소수의 목적은 대략적인 값을 저장하는 것이므로 허용됩니다."

" 축소 변환을 수행할 때 우리는 오류가 발생하지 않았음을 컴파일러에 명시적으로 알려야 합니다. 일부러 숫자의 일부를 버리는 것입니다. 이를 위해 캐스트 연산자 ( 예: 괄호 안의 유형 이름 )를 사용합니다."

"이것은 다양한 유형의 변수를 할당하는 방법입니다."

자바 코드 설명
byte a = 115;
int b = a;
프리미티브 변환 확대. 모든 것이 훌륭합니다.
int c = 10000;
byte d = (byte) c;
축소 프리미티브 변환 . 여분의 바이트를 버려야 한다고 명시적으로 명시해야 합니다.
int c = 10;
byte d = (byte) c;
축소 프리미티브 변환. 여분의 바이트는 0과 같더라도 버려야 한다고 명시적으로 명시해야 합니다.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
float에 할당할 때 확장 프리미티브 변환이 발생합니다. float를 long에 할당할 때 축소 기본 변환이 발생합니다. 캐스트 연산자가 필요합니다.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
첫 번째 줄을 제외한 모든 할당 작업에서 축소 변환. 이러한 변환을 위해서는 유형 변환을 명시적으로 나타내야 합니다.
3
과제
Java Syntax,  레벨 10레슨 3
잠금
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.

" 캐스트 연산자는 숫자의 일부가 버려지거나 축소 기본 변환이 발생할 때 숫자/변수 앞에 와야 합니다. 캐스트 연산자는 바로 뒤에 오는 숫자/변수에만 영향을 미칩니다."

자바 코드 설명
float f = 10000;
long l = (long) f * f;
두 변수 중 하나만 long으로 캐스트됩니다. long과 float의 곱은 float와 같습니다.
float f = 10000;
long l = (long) (f * f);
전체 표현식이 long으로 캐스트됩니다.

"알겠어요."