В дополнение к ответам, данным до сих пор ...
Всего существует четыре значения
int i = Integer.MIN_VALUE;
long i = Long.MIN_VALUE;
Integer i = Integer.valueOf(Integer.MIN_VALUE);
Long i = Long.valueOf(Long.MIN_VALUE);
Обернутые значения разворачиваются, поэтому они также верны для этого выражения.
Примечание: документы Math.abs.
общедоступный статический int abs (int a)
Возвращает абсолютное значение типа int. Если аргумент не отрицательный, возвращается аргумент. Если аргумент отрицательный, возвращается отрицание аргумента.
Обратите внимание, что если аргумент равен значению Integer.MIN_VALUE, наиболее отрицательному представимому значению int, результатом будет то же самое значение, которое является отрицательным.
и
публичный статический длинный пресс (длинный а)
Возвращает абсолютное значение длинного значения. Если аргумент не отрицательный, возвращается аргумент. Если аргумент отрицательный, возвращается отрицание аргумента.
Обратите внимание, что если аргумент равен значению Long.MIN_VALUE, наиболее отрицательному представимому длинному значению, результатом будет то же самое значение, которое является отрицательным.
Удивительно, что Math.abs может возвращать отрицательное число. Это происходит либо потому, что: а) в этих случаях нет положительных значений для -MIN_VALUE; б) выполнение -вычислений приводит к переполнению.
Интересно также, почему этого не делают Byte.MIN_VALUE, Short.MIN_VALUE. Это связано с тем, что для них -изменяется тип, intи, следовательно, нет переполнения.
Character.MIN_VALUE не имеет проблем, потому что он равен 0.
Float.MIN_VALUE и Double.MIN_VALUE имеют разное значение. Это наименьшее представимое значение больше нуля. Таким образом, они имеют действительные отрицательные значения, которые не являются самими собой.