ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Math.abs()传入Integer最大值提示:Use the original value instead.

2020-06-30 13:54:40  阅读:16  来源: 互联网

标签:Use MIN MAX VALUE abs value Integer 溢出


今天早上旁边同事喊我看一个Sonar检测出的问题:
Sonar检测问题
当时看了好几眼没觉得这个有太大问题,于是又看了下Sonar建议:
Sonar建议
这是说Math.abs()方法使用在数字上面可能返回最小值,觉得这个挺有意思的,于是Google一下:

Oracle docs: Integer Operations中有这么一段话:

The integer operators do not indicate overflow or underflow in any way.

整数的操作不会告诉我们向上溢出还是向下溢出。
所以,溢出的结果已由语言指定,独立于JVM版本,Integer.MAX_VALUE + 1 == Integer.MIN_VALUE 和 Integer.MIN_VALUE - 1 == Integer. MAX_VALUE。其他整数类型也是如此。

原子整形对象 (AtomicInteger, AtomicLong, etc.) 内部使用正常的整形去操作,所有类似getAndDecrement()方法的操作都表现一样。

所以最终把方法改成new Random().nextInt(Integer.MAX_VALUE)就好了。

参考

标签:Use,MIN,MAX,VALUE,abs,value,Integer,溢出
来源: https://www.cnblogs.com/mrcharleshu/p/13213309.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有