Java 8 имеет b
и т. Д. Для ints и long maximum = Long . signum ( a ) == Долго . signum ( b ) ? Долго . MAX_VALUE : Длинные . MIN_VALUE ; if ( a ! = 0 && ( b > 0 && b > максимум / a || b < 0 && b < максимумif (a != 0 && b > Long.MAX_VALUE / a) { // Overflow }
/ a )) { // Переполнение } . Они бросают неконтролируемый переполнение. a = 5 b = 2 2 > 10 / 5 a = 2 b = 5 5 > 10 / 2 a = -5 b = 2 2 > -10 / -5 a = -2 b = 5 5 > -10 / -2 a = 5 b = -2 -2 < -10 / 5 a = 2 b = -5 -5 < -10 / 2 a = -5 b = -2 -2 < 10 / -5 a = -2 b = -5 -5 < 10 / -2