Вопрос @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 выходит за пределы диапазона.

Ответы на вопрос(2)

Ваш ответ на вопрос