Вопрос @RomanC очень прост, если вы видите соответствующий код. Почему неявное сужающее преобразование предоставляется в одном случае (int литерал в байт), но не в другом случае (длинный литерал в int). Снова обновил вопрос, чтобы сделать его более понятным
отрим приведенный ниже фрагмент кода:
// automatic casting works for int to byte conversion as integer literal 127
// is in the range for byte
byte b1 = 127; //OK
// automatic casting doesn't work for long to int conversion
// even if long literal is in the range of int.
int i5 = 100L; // NOT OK - compilation error
Есть ли объяснение такого поведения?
Почему явное преобразование не требуется в случае int в байты, но необходимо для длинных в int?
Как Java конвертирует int в байты? вопрос в другом. Речь идет о проблеме неявного преобразования int в байт, когда значение int выходит за пределы диапазона.