15
int
및 short
유형이 Byte
인 상수의 자동 상자 작성 중에 오류가 없지만 상수가 long
인 do에는 오류가 있습니다. 왜?autoboxing하는 동안 왜 최종 바이트 컴파일 오류가 발생하지만, 최종 정수는 바이트 괜찮아?
final int i = 3;
Byte b = i; // no error
final short s = 3;
Byte b = s; // no error
final long l = 3;
Byte b = l; // error
내가 왜 배울 궁금합니다. 긴 단어가 기계라는 사실과 관련이있을 수 있습니까? –
아마도 'int'가 표현식을 포함한 상수 값의 기본 유형이기 때문에'short s = 123'과 같은 코드가 _lot됩니다. 그런 좁은 변환이 사용되지 않으면 모든 곳에서 캐스트가 필요합니다. . 특히 Java는 유형이 좁은 리터럴 구문이 없습니다. 반면에 식의 타입이 명시 적으로'long'이거나 상수에 L이 사용되었거나 어떤 부분이 상수이기 때문에 그 값을 좁히는 것이 오류 일 수 있으며 이런 상황은 훨씬 덜 일반적입니다 'int' case보다 더 길다. 그리고 나는 균형을 잘못 추측하고있다. – BeeOnRope
autoboxing은 이것과 관련이 없다는 점에 유의하십시오. 똑같은 것이 순수한 원시 타입에 적용됩니다. 규칙은 추가되었을 때 박스형에 대한 할당을 포함하도록 확장되었습니다. @JonathanRosenne – BeeOnRope