若吾皇
如果a和b均为正,则可以使用:if (a != 0 && b > Long.MAX_VALUE / a) { // Overflow}如果您需要同时处理正数和负数,则更加复杂:long maximum = Long.signum(a) == Long.signum(b) ? Long.MAX_VALUE : Long.MIN_VALUE;if (a != 0 && (b > 0 && b > maximum / a || b < 0 && b < maximum / a)){ // Overflow}这是一张小桌子,我用鞭打检查一下,假装溢出发生在-10或+10:a = 5 b = 2 2 > 10 / 5a = 2 b = 5 5 > 10 / 2a = -5 b = 2 2 > -10 / -5a = -2 b = 5 5 > -10 / -2a = 5 b = -2 -2 < -10 / 5a = 2 b = -5 -5 < -10 / 2a = -5 b = -2 -2