Java数学API更新了什么

wen java案例 1

本文目录导读:

Java数学API更新了什么

  1. Java 8:最重大的扩展
  2. Java 9:精度与除法的改进
  3. Java 17:向量计算的序幕
  4. Java 21:除法与向量功能转正
  5. 总结表:你最需要关心的 API

Java 的数学 API 主要更新体现在 Java 8、Java 9、Java 17 和 Java 21 这几个版本。

以下是各版本最核心的数学 API 更新:

Java 8:最重大的扩展

这是 Java 数学 API 扩展最大的一次,主要在 java.lang.Mathjava.lang.StrictMath 中新增了大量函数:

  • 精确算术运算
    • addExact(), subtractExact(), multiplyExact(), negateExact():当结果溢出时直接抛出 ArithmeticException,而不是静默返回错误值。
    • incrementExact(), decrementExact():安全的 +1/-1 操作。
  • 无符号整数处理
    • floorDiv(), floorMod():向负无穷取整的除法与取模(不同于传统向零取整)。
    • toIntExact():将 long 安全转换为 int
  • 其他常用数学计算
    • floor():返回不大于参数的最大整数(双精度)。
    • nextDown():返回比参数小的下一个浮点数(对应已有的 nextUp())。
    • copySign():复制符号位。

Java 9:精度与除法的改进

  • Math.fma(float, float, float)Math.fma(double, double, double): 执行浮点融合乘加运算(a * b + c),关键优势是它只舍入一次,相比之下,先乘后加会舍入两次,fma() 结果更精确。

Java 17:向量计算的序幕

  • jdk.incubator.vector 模块:这是一个孵化器模块,引入了 Vector API
    • 它允许开发者使用 SIMD(单指令多数据流)指令,在 CPU 上并行处理数组数据,显著提升科学计算、机器学习等场景的性能。
    • 官方示例:FloatVector SPECIES_PREFERRED; SPECIES_PREFERRED.broadcast(1.0f);

Java 21:除法与向量功能转正

  • Math.divideUnsigned()Math.floorDiv() 的溢出处理
    • divideUnsigned():无符号除法,当除数为 0 时抛出 ArithmeticException
    • floorDivExact(int, int)floorDivExact(long, long):安全向负无穷取整除法,溢出时抛出异常。
  • 向量 API 转正jdk.incubator.vector 模块在 Java 19 和 20 经历三轮孵化后,在 Java 21 中正式成为标准 API,不再是孵化器特性。

总结表:你最需要关心的 API

版本 新增方法 / 特性 主要用途
Java 8 addExact, multiplyExact, floorDiv, floorMod, toIntExact 防止整数溢出,安全处理大数
Java 9 fma(a, b, c) 高精度浮点乘加运算(一次性舍入)
Java 17 Vector API (孵化器) 高性能并行向量计算(SIMD)
Java 21 floorDivExact, divideUnsigned, Vector API (转正) 更安全的除法、官方推荐的高性能并行数学运算

注意java.math.BigDecimalBigIntegerjava.util.Random 的更新不在此列,它们属于各自的独立更新范畴。

如果你需要查看某个具体方法的源码细节或使用示例,可以告诉我,我可以帮你进一步解释。

抱歉,评论功能暂时关闭!