Этот вопрос не о том, как длинный должен быть правильно добавлен в int, а скорее, что происходит, когда мы неправильно приводим его в int.
Итак, рассмотрим этот код -
@Test
public void longTest()
{
long longNumber = Long.MAX_VALUE;
int intNumber = (int)longNumber; // potentially unsafe cast.
System.out.println("longNumber = "+longNumber);
System.out.println("intNumber = "+intNumber);
}
Это дает результат -
longNumber = 9223372036854775807
intNumber = -1
Теперь предположим, что сделаю следующее изменение -
long longNumber = Long.MAX_VALUE - 50;
Затем я получаю вывод -
longNumber = 9223372036854775757
intNumber = -51
Вопрос в том, , как - это длинное значение, которое преобразуется в int?