Java数学API更新了什么

wen java案例 306

本文目录导读:

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.Math 和 java.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.BigDecimal、BigInteger 和 java.util.Random 的更新不在此列,它们属于各自的独立更新范畴。

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

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

友情链接攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
相关站点礼包窝 · 查文窝