java编程课程培训学习笔记|易疏忽的溢出
发布时间:2024-08-03 10:19:53 点击:
大家都知道Java行业是很注重技术的,即使我们入行也要不断提升自己的技术水平才能不被淘汰,那么如何不断提升自己的Java编程技术呢?北京八维教育培训学校整理了一份java课程培训学习笔记——易疏忽的溢出。

现象
有时候溢出并不难,虽然不常复现:
示例一:
long x=Integer.MAX_VALUE+1;
System.out.println(x);
x是多少?竟然是-2147483648,明明加上1之后还是long的范围。类似的经常出现在时间计算:
数字1×数字2×数字3…
示例二:
在检查是否为正数的参数校验中,为了避免重载,选用参数number, 于是下面代码结果小于0,也是因为溢出导致:
Number i=Long.MAX_VALUE;
System.out.println(i.intValue()>0);

解决
1). 让第一个操作数是long型,例如加上L或者l(不建议小写字母l,因为和数字1太相似了);
2). 不确定时,还是使用重载吧,即使用doubleValue(),当参数是BigDecimal参数时,也不能解决问题。
启示
对数字运用要保持敏感:涉及数字计算就要考虑溢出;涉及除法就要考虑被除数是0;实在容纳不下了可以考虑BigDecimal之类。


