Почему приведенный ниже код печатает 2147483647, фактическое значение которого равно 2147483648?Основной вопрос на int int int
i = (int)Math.pow(2,31) ;
System.out.println(i);
Я понимаю, что максимальное положительное значение, что INT может держать это 2147483647. Тогда почему же код, как этот автомобиль оборачивает к отрицательной стороне и печатает -2147483648?
i = (int)Math.pow(2,31) +1 ;
System.out.println(i);
i имеет тип Integer. Если второй образец кода (добавление двух целых чисел) может обернуться на отрицательную сторону, если результат выходит за пределы положительного диапазона, почему первый образец не может быть обернут? Кроме того,
i = 2147483648 +1 ;
System.out.println(i);
, который очень похож на второй образец кода бросков ошибки на этапе компиляции говоря, что первый буквальным находится вне диапазона целых чисел? Мой вопрос: согласно второму образцу кода, почему первая и третья выборки не могут быть загружены с другой стороны?
Для уточнения это не имеет никакого отношения к 'java.lang.Integer', который отличается от' int'. – polygenelubricants
Как это важно? Проблема (или вопрос) будет одинаковой, даже если я наследую ее (Integer), а не int. – chedine