"안녕, 아미고!"

"안녕, 엘리!"

"오늘은 기분이 좋아서 뭔가 재미있는 이야기를 해주고 싶은데 자바의 타입 시스템이 프리미티브 타입을 어떻게 처리하는지부터 시작하겠다."

" 자바에서는 각 객체와 각 변수에 고유한 변경 불가능한 유형이 미리 설정되어 있습니다. 기본 변수의 유형은 프로그램이 컴파일될 때 결정되지만 객체의 유형은 생성될 때 결정됩니다. 새로 생성된 객체 및/또는 변수의 유형은 수명 기간 동안 변경되지 않은 상태로 유지됩니다. 예를 들면 다음과 같습니다."

자바 코드 설명
int a = 11;
int b = 5;
int c = a / b; // c == 2
a / b– 정수 나눗셈을 나타냅니다. 대답은 두 가지입니다. 나누기 연산의 나머지는 단순히 무시됩니다.
int a = 13;
int b = 5;
int d = a % b; // d == 3
da의 정수 나눗셈의 나머지를 저장합니다 b. 나머지는 3입니다.

"기억해야 할 몇 가지 흥미로운 뉘앙스가 있습니다."

"첫째, 참조 변수가 항상 동일한 유형의 값을 가리키는 것은 아닙니다."

"둘째, 두 가지 다른 유형의 변수가 상호 작용할 때 먼저 동일한 유형으로 변환되어야 합니다."

"나눗셈은요? 1을 3으로 나누면 0.333(3)이 됩니다. 맞죠?"

"아니, 그렇지 않아. 두 개의 정수를 나누면 결과도 정수야. 5를 3으로 나누면 답은 1이 되고 나머지는 2가 되고 나머지는 무시될 거야."

"1을 3으로 나누면 0이 됩니다(알림 1은 무시됨)."

"하지만 0.333을 얻으려면 어떻게 해야 합니까?"

"Java에서는 나눗셈을 수행하기 전에 부동 소수점 숫자 일(1.0)을 곱하여 숫자를 부동 소수점(소수) 유형으로 변환하는 것이 가장 좋습니다."

자바 코드 설명
int a = 1/3;
a0이 될 것이다
double d = 1/3;
 d 0.0이 될 것입니다.
double d = 1.0 / 3;
d0.333(3)
double d = 1 / 3.0;
d0.333(3)
int a = 5, b = 7;
double d = (a * 1.0) / b;
d0.7142857142857143이 됩니다.

"알았어요."