경우 short
자동으로 승격되어 int
산술 연산에서, 왜이다 :
short thirty = 10 * 3;
short
변수에 대한 법적 할당 thirty
?
차례로 이것은 :
short ten = 10;
short three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
뿐만 아니라 :
int ten = 10;
int three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
예상대로 캐스팅하지 않고 int
값을 할당 할 수 없기 때문에 컴파일되지 않습니다 short
.
숫자 리터럴에 대해 특별한 일이 있습니까?
10 * 3
는 결과로 변수를 계산 하고 초기화합니다. 작동하지 않는 예제에서 계산은 JVM이 short를 캐스팅하는 런타임에 발생합니다.
final int ten = 10; final int three = 3; short thirty = ten * three;
잘 컴파일됩니다.
If short is automatically promoted to int in arithmetic operations
-그것은 관련이 없습니다. 어느 쪽 10
도 아니다 3
그들은있는 거 리터럴 반바지 없습니다 없으며 승진이다.
10
과 3
같이 평가 int
컴파일러로의?
short thirty = 10 * 3;
아마도short thirty = 30;
유효한 명령문 인 컴파일러 로 대체되었을 것입니다 . (하지만 관련 JLS 섹션을 찾아야합니다).