Java Math.incrementExact(int a) 目的

mba*_*ski 5 java

为什么会有这个方法存在?有什么区别

int a = 5;
Math.incrementExact(a);
Run Code Online (Sandbox Code Playgroud)

int a = 5;
a++;
Run Code Online (Sandbox Code Playgroud)

Aus*_*n D 4

它有什么作用?int它提供了一种在对和原语执行算术时检查溢出的快速方法long。在许多应用中,必须小心处理溢出。JavaDoc 指出:

返回参数加一,如果结果溢出 int,则抛出异常。

从数学的角度来看,2147483647 +1 = 2147483648. 但在 Java 中,2147483647 +1 = -2147483648. 从算术上来说,这没有意义。

为什么不把它交给程序员呢? 如果您没有此方法(及其decrementExact()对应方法),则必须将类似于以下内容的代码添加到您的程序中:

    if (a == Integer.MAX_VALUE) {
        throw new ArithmeticException("integer overflow");
    } else {
        a ++;
    }
Run Code Online (Sandbox Code Playgroud)

“精确”一词是什么意思?Math包使用“exact”来暗示ArithmeticException发生溢出时抛出异常。另一方面,Math使用“不精确”来描述类似toRadians()或 的方法toDegrees(),因为它们产生近似结果,例如乘以PI=3.141592653589793