引用至:https://blog.csdn.net/neweastsun/article/details/79873698

java8 Math新增方法

通常都认为java8新功能主要包括函数式编程及lambda表达式。然而,除了那些大的特点之外,还有其他的,影响力小却很有趣,大多时候不为人所知,甚至不太被人评论。
本文我们列举java.lang.Math类中新增的方法,并给一些小的示例来说明。

*exact() 方法

首先看一组扩展已经存在的常用算术操作方法,从名称及可以知其意,处理实现原有功能外,还增加了当结果溢出时抛出异常。这些方法可以使用integer和long类型作为参数。

addExact()

返回两个参数之和,结果溢出时抛出ArithmeticException 异常:

Math.addExact(100, 50);               // returns 150
Math.addExact(Integer.MAX_VALUE, 1);  // throws ArithmeticException12

substractExact()方法

返回两个参数之差,结果溢出时抛出ArithmeticException 异常:

Math.subtractExact(100, 50);           // returns 50
Math.subtractExact(Long.MIN_VALUE, 1); // throws ArithmeticException12

incrementExact()方法

返回参数值加一,结果溢出时抛出ArithmeticException 异常:

Math.incrementExact(100);               // returns 101
Math.incrementExact(Integer.MAX_VALUE); // throws ArithmeticException12

decrementExact()方法

返回参数值减一,结果溢出时抛出ArithmeticException 异常:

Math.decrementExact(100);            // returns 99
Math.decrementExact(Long.MIN_VALUE); // throws ArithmeticException12

multiplyExact()方法

返回两个参数之积,结果溢出时抛出ArithmeticException 异常:

Math.multiplyExact(100, 5);            // returns 500
Math.multiplyExact(Long.MAX_VALUE, 2); // throws ArithmeticException12

negateExact()方法

改变参数符号,结果溢出时抛出ArithmeticException 异常。我们来看看值在内存中的表示,并理解为什么会溢出,因为并不像其他exact方法那么直观看出来:

Math.negateExact(100);               // returns -100
Math.negateExact(Integer.MIN_VALUE); // throws ArithmeticException12

第二个示例需要解释下,因为不能一眼看出来:溢出是因为Integer.MIN_VALUE 是 −2.147.483.648,而Integer.MAX_VALUE 是 2.147.483.647,所以返回值超出整数范围。

其他方法

floorDiv()

第一个参数除以第二参数,然后针对结果执行floor操作,返回小于或等于商的整数:

Math.floorDiv(7, 2));  // returns 31

商为 3.5 ,所以 floor(3.5) == 3.

让我们看另一个示例:

Math.floorDiv(-7, 2)); // returns -41

商为-3.5 ,所以 floor(-3.5) == -4.

modDiv()方法

该方法与前面floorDiv()方法类似, 但在模数或余数上应用floor() 操作,而不是商:

Math.modDiv(5, 3)); // returns 21

我们看到 , modDiv() 方法两个参数为正数,和 % 操作符效果一样。让看看另一个不同示例:

Math.modDiv(-5, 3));  // returns 11

结果为 1 而不是 2 ,因为floorDiv(-5, 3) 是 -2 ,而不是 -1.

nextDown()方法

返回参数直接较低的值(支持 float 或 double 参数):

float f = Math.nextDown(3);  // returns 2.9999998
double d = Math.nextDown(3); // returns 2.99999976158142112

总结

我们描述了java8中java.lang.Math类中所有新的方法,并通过示例给与解释说明。

Java8 Math新增方法相关推荐

  1. java math mod_java8 Math新增方法介绍

    通常都认为java8新功能主要包括函数式编程及lambda表达式.然而,除了那些大的特点之外,还有其他的,影响力小却很有趣,大多时候不为人所知,甚至不太被人评论. 本文我们列举java.lang.Ma ...

  2. java8 Map新增方法的使用

    文章目录 文章目录 文章目录 java8 Map新增方法的使用 概述 1.compute() 1.使用 2.源码实现 2.computeIfAbsent() 1.使用 2.源码 3.computeIf ...

  3. ES6 Math新增方法trunc() sign() cbrt()

    trunc()保留数值整数 trunc() 执行逻辑很简单,仅仅是删除掉数字的小数部分和小数点,不管参数是正数还是负数 对比parseInt() : 注意: 调用parseInt方法时,会隐式地将传入 ...

  4. 30分钟入门Java8之默认方法和静态接口方法

    2019独角兽企业重金招聘Python工程师标准>>> 30分钟入门Java8之默认方法和静态接口方法 作者:@JohnTsai 本文为作者原创,转载请注明出处:http://www ...

  5. ES6 --》字符串与数值新增方法

    目录 字符串新增方法 模板字符串 字符串对象新增方法 数值新增方法 Math数值新增方法 主要讲解了ES6中字符串与数值新增的常见的主要方法, 对其做了如下总结: 字符串新增方法 ES6对字符串新增的 ...

  6. ES5新增方法、函数调用、this、严格模式、高阶函数(11th)

    1.ES5中的新增方法 1.1 ES5 新增方法概述 ES5 中给我们新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括: 1.数组方法 2.字符串方法 3.对象方法 1.2 数组方法 ...

  7. Java8 - 接口默认方法

    2019独角兽企业重金招聘Python工程师标准>>> Java8 - 接口默认方法 什么是默认方法,为什么要有默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法 ...

  8. JAVA移慎_谨慎使用Java8的默认方法

    为什么要谨慎使用Java8的默认方法?本文给出了为什么要慎用Java8默认方法的原因,解释的很详细,感兴趣的朋友可以参考一下 默认方法给JVM的指令集增加了一个非常不错的新特性.使用了默认方法之后,如 ...

  9. 浅谈 Math.BigMul 方法

    偶然在 MSDN 上看到 Math.BigMul 方法: Math.BigMul 方法 生成两个 32 位数字的完整乘积. 命名空间:System 程序集: mscorlib(在 mscorlib.d ...

最新文章

  1. php 二维数组排序函数,php自定义二维数组排序函数array
  2. 请大佬们多给运维人员思考和决策的权利
  3. Siamese-RPN目标跟踪算法
  4. php python插件安装,小弟我的vim配置和插件 小型 python php IDE
  5. CodeForces - 466C Number of Ways(推公式/dp)
  6. 如何看待李开复演讲称早期帮旷视拿了蚂蚁金服大量人脸数据,以及李开复、蚂蚁和旷视的澄清?该如何保护隐私?...
  7. android单片机wifi通信原理,基于单片机计算机之间无线通信实现.doc
  8. mysql 多表并列查询_Mysql多表查询(两张独立表,一张关系表)
  9. 每日算法系列【LeetCode 153】寻找旋转排序数组中的最小值
  10. iOS版本更新的方法
  11. HIMSS 对EHR的定义
  12. Linux centos 7安装
  13. 实验室gpu服务器集群 使用方法探索
  14. AngularJS【初体验】-02
  15. 无人机“风袭”黄冈|战疫日记
  16. beyond compare 4 This license key has been revoked 出现的问题与解决办法
  17. C# WinForm 文件夹选择控件 folderBrowserDialog 的应用实例
  18. Eigenvalue and singular value
  19. 看懂Python爬虫框架,所见即所得一切皆有可能
  20. React hooks 不能拿到最新的的setState的值

热门文章

  1. spark java foreach_Spark Java使用DataFrame的foreach/foreachPartition
  2. cad新手必练300图_零基础学习CAD软件难吗?超全CAD入门学习教程送给你
  3. 在 ESXi 上配置 syslog (2003322)
  4. 数据传输服务 DTS > 数据迁移 > 同一阿里云账号实例间迁移 > RDS实例间的数据迁移
  5. SACC2019架构师大会PPT合集
  6. java maxheap_Java底层PriorityQueue 优先队列——基于MaxHeap最大堆
  7. 二阶偏微分方程组 龙格库塔法_数值方法(MATLAB版)(原书第3版)[Numerical Methods Using MATLAB,Third Edition]pdf...
  8. 再好好聊聊 HTTP 里的 Cookie | 实用 HTTP
  9. Linux中常用的网络命令
  10. redis主从,哨兵回忆手册