Приведение несовместимых типов в Java языке (int в byte)?
Начинаю учить Java и сразу возник такой вопрос. При приведении типа int в тип byte значение переменной х равен 145, что входит в диапазон допустимых значений типа byte. Как я понимаю, должно вывести два одинаковых числа, но на практике -111, 145. Не могу понять почему.
class mainactivity {
public static void main(String[] args) {
byte b;
int x = 145;
System.out.println("преобразование int в byte" );
b = (byte) x;
System.out.println(b + " " + x);
Влад: если вы поставите например 128, то должно вывести -128. Это потому, что при превышении границы число условно говоря идет по кругу начиная с минимального значения. то есть 129 выведет -127 и т.д. до 145 которое выведет -111. Таким образом число 383 (127 + 256) выведет 127, если я не ошибся с расчетами, 384 выведет -128, 385 выведет -127 и т.д.