📜  Java番石榴 |带有示例的 Longs.checkedSubtract(long a, long b) 方法(1)

📅  最后修改于: 2023-12-03 15:02:05.377000             🧑  作者: Mango

Java番石榴 | 带有示例的 Longs.checkedSubtract(long a, long b) 方法

Longs.checkedSubtract(long a, long b) 方法是由 Google 提供的 Guava 框架中的一个方法,它的作用是计算两个 long 类型的数值 a 和 b 的差值,并且在溢出的情况下抛出 ArithmeticException 异常。

方法签名
public static long checkedSubtract(long a, long b) throws ArithmeticException
参数说明

| 参数 | 描述 | | --- | --- | | a | 被减数 | | b | 减数 |

返回值

两个 long 类型数值 a 和 b 的差值。

是否抛出异常

当计算结果会导致溢出时,抛出 ArithmeticException 异常。

示例
import com.google.common.math.LongMath;
import java.math.RoundingMode;

public class LongsCheckedSubtractDemo {
    public static void main(String[] args) {
        long a = 9223372036854775807L;
        long b = 1L;
        try {
            long result = LongMath.checkedSubtract(a, b);
            System.out.println(result);
        } catch (ArithmeticException e) {
            System.out.println("计算溢出了!");
        }
    }
}

在上述示例中,我们尝试计算两个 long 类型的数 a 和 b 的差值,a 的值为 9223372036854775807,b 的值为 1。由于 a - b 的结果已经超出了 long 类型的取值范围,因此 LongMath.checkedSubtract(long a, long b) 方法会抛出 ArithmeticException 异常,输出 "计算溢出了!"。

如果我们将 b 的值改为 -1,那么 a - b 的结果就在 long 类型的取值范围内,此时 LongMath.checkedSubtract(long a, long b) 方法会正确地返回 a - b 的值 9223372036854775808。

结论

Longs.checkedSubtract(long a, long b) 方法是一个计算 long 类型数值差值的方法,它可以确保计算结果不会溢出,并在溢出的情况下抛出 ArithmeticException 异常。因此,在进行 long 类型数值的差值计算时,可以优先考虑使用该方法。