读书人

Java圈套(三)

发布时间: 2013-04-12 18:33:12 作者: rapoo

Java陷阱(三)

前言:摘自《Java解惑》。这些问题都很经典,可以细细品味。


问题:无情的增量

代码:

/** *循环者2 * @authorLiangGzone */public class LoopDemo2 {  publicstatic void main(String[] args) {  doublei = Double.NaN;  while(i!= i){  System.out.println("loop");  }  }}
分析:任何浮点操作,只要它的一个或多个操作数为NaN,那么其结果为NaN。一旦一个计算产生了NaN,它就被损坏了,没有任何更进一步的计算可以修复这样的损坏。NaN值意图使受损的计算继续执行下去,直到方便处理这种情况的地方为止。

建议:float和double类型都有一个特殊的NaN值,用来表示不是数字的数量。对于涉及NaN值的计算,其规则很简单也很明智,但是这些规则的结果可能是违背直觉的。


阅读链接:

Java陷阱(一)

Java陷阱(二)

Java陷阱(三)

Java陷阱(四)





读书人网 >编程

热点推荐