Math.incrementExact(int a)

mat*_*tua 0 java api

为什么不按每个API抛出和异常?:

返回以1递增的参数,如果结果溢出int则抛出异常.

System.out.println(Math.incrementExact(2_147_483_647 + 1));
Run Code Online (Sandbox Code Playgroud)

返回-2147483647

Erw*_*idt 9

那是因为你传递Integer.MIN_VALUE给了这个Math.incrementExact功能.

2_147_483_647 + 1首先评估您的表达式,并且因为它溢出,结果是-2147483648.然后你传递给Math.incrementExact它,结果-2147483647.

你想做的是

System.out.println(Math.incrementExact(2_147_483_647));
Run Code Online (Sandbox Code Playgroud)

这导致了java.lang.ArithmeticException: integer overflow.