问题

在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如果溢出就返回Integer.MAX_VALUE

解决方案

JDK8已经帮我们实现了Math下,不得不说这个方法是在StackOverflow找到了的,确实比国内一些论坛好多了~

加法

public static int addExact(int x, int y) {int r = x + y;// HD 2-12 Overflow iff both arguments have the opposite sign of the resultif (((x ^ r) & (y ^ r)) < 0) {throw new ArithmeticException("integer overflow");}return r;
}

减法

 public static int subtractExact(int x, int y) {int r = x - y;// HD 2-12 Overflow iff the arguments have different signs and// the sign of the result is different than the sign of xif (((x ^ y) & (x ^ r)) < 0) {throw new ArithmeticException("integer overflow");}return r;
}

乘法

public static int multiplyExact(int x, int y) {long r = (long)x * (long)y;if ((int)r != r) {throw new ArithmeticException("integer overflow");}return (int)r;
}

注意 long和int是不一样的

  public static long multiplyExact(long x, long y) {long r = x * y;long ax = Math.abs(x);long ay = Math.abs(y);if (((ax | ay) >>> 31 != 0)) {// Some bits greater than 2^31 that might cause overflow// Check the result using the divide operator// and check for the special case of Long.MIN_VALUE * -1if (((y != 0) && (r / y != x)) ||(x == Long.MIN_VALUE && y == -1)) {throw new ArithmeticException("long overflow");}}return r;
}

如何使用?

直接调用是最方便的,但是为了追求速度,应该修改一下,理解判断思路,因为异常是十分耗时的操作,无脑异常有可能超时

写这个的目的

总结一下,也方便告诉他人Java帮我们写好了函数。

作者:Aaron_涛

来源:blog.csdn.net/qq_33330687/article/details/81626157

猜你喜欢

1、2019 年 9 月全国程序员工资统计,你是什么水平?

2、如何才能成为优秀的架构师?

3、从零开始搭建创业公司后台技术栈

4、程序员一般可以从什么平台接私活?

5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6、滴滴业务中台构建实践,首次曝光

7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

8、15张图看懂瞎忙和高效的区别!

StackOverflow热帖:Java整数相加溢出怎么办?Java8一步搞定~相关推荐

  1. StackOverflow热帖:Java整数相加溢出怎么办?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | Aaron_涛 来源 | blog.csdn. ...

  2. java 加法 溢出_StackOverflow热帖:Java整数相加溢出怎么办?Java8一步搞定~

    阅读本文大概需要 2 分钟. 作者:Aaron_涛 问题 在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如果溢出就返回Integer.MAX_VALUE 解决方案 JDK8已经帮 ...

  3. unsigned long long 溢出 乘_Java整数相加溢出怎么办?Java8一步搞定

    问题 在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如果溢出就返回Integer.MAX_VALUE 解决方案 JDK8已经帮我们实现了Math下,不得不说这个方法是在Stack ...

  4. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  5. JAVA微信企业付款到零钱(十分钟搞定),附完整DEMO下载

    最近帮朋友做了一个简单的微分销系统,实现从企业付款到零钱分润的功能,简单记录一下微信提现功能开发的流程, 主要就是按规则封装好请求参数调用微信接口,涉及一些签名校验: A.接口流程 获取用户OPENI ...

  6. java粒子特效_程序员20分钟搞定粒子效果, 仅仅200行代码

    原标题:程序员20分钟搞定粒子效果, 仅仅200行代码 这粒子的打造,确实没有布局代码,稍后大家在源码上可以看到,css代码都只有几行,绝大部分代码都是java代码,而且是原生java书写的,现在很多 ...

  7. Java原来还可以这么学:如何搞定面试中必考的集合类

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

  8. sql 相加_Java整数相加溢出怎么办?Java 8 还是厉害!

    作者:Aaron_涛 blog.csdn.net/qq_33330687/article/details/81626157 问题 在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如 ...

  9. 如何检测整数相加溢出

    if(sum>Int32.MaxValue-b)                     {                         throw new OverflowExceptio ...

  10. java 快排_八大排序-快速排序(搞定面试之手写快排)

    概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...

最新文章

  1. 动态语言,静态类型,强类型定义语言,弱类型定义语言,
  2. 45个案例一一破解win32k.sys蓝屏
  3. 2022-01-06
  4. quill鼠标悬浮 出现提示_外设报道——DELUX多彩M618X垂直鼠标颠覆创新
  5. java线程死亡_Java模因拒绝死亡
  6. landscape 1
  7. SpringMVC入门实例及详细讲解
  8. Oracle SQL 模拟MySQL的inet_aton()和inet_ntoa()
  9. python爬取美女图片_Python 爬取美女图片
  10. 2015年仿团800首页视频教程
  11. STM32第二十一课(USB SLAVE, HAL)
  12. 在pc电脑上使用地图(百度地图、高德地图等),地图软件是怎么获取pc电脑的所在位置的?
  13. SAP系统中的几种系统级消息(用户登录后消息弹窗SM02,TH_POPUP,以及系统邮件)
  14. (附源码)springboot跨境电商系统 毕业设计 211003
  15. 设置允许远程连接数据库
  16. CSDN 自定义博客栏目
  17. 采用EM算法对高斯混合模型(GMM)进行参数估计
  18. quantenna测试RF射频性能简单说明
  19. javah 类com.xxxx.xxxx 找不到问题解决方法
  20. android飞行射击游戏代码,android 3D飞行射击游戏《夜鹰行动》源码

热门文章

  1. HttpServletRequest小结
  2. BZOJ2337:[HNOI2011]XOR和路径——题解
  3. 【设计模式】建造者模式(生成器模式)
  4. TCP/UDP,SOCKET,HTTP,FTP 简析
  5. cannot register datanode 0.0.0.0:1002,because current license expired time is
  6. 自定义实现js的confirm方法
  7. JAVA B/S系统实现客户端屏幕截图,Java版的QQ截图
  8. Objective-c:NSString的常用方法
  9. android中颜色对应的值
  10. Axure RP 8 for Mac(交互式原型设计工具)汉化版