摘自Math javadoc
“平台使用具有int和long基元类型的带符号二进制补码整数算术。开发人员应选择基元类型,以确保算术运算始终产生正确的结果,这在某些情况下意味着运算不会溢出计算值的范围。最佳做法是选择基元类型和算法以避免溢出。”
对于Java 8:
在大小为int或long且需要检测溢出错误的情况下,当结果溢出时,方法addExact、subtractExact、multiplyExact和toIntExact将抛出ArithmeticException。对于除、绝对值、递增、递减和求反等其他算术运算,仅在具有特定的最小值或最大值时发生溢出,应根据最小值或最大值进行适当的检查