最近我接受了一家软件公司的采访,在技术能力回合中提出了以下问题:
以一种条件始终为真的方式声明我:
while(i != i) {
}
在java中技术上是否可以分配这类东西?
答案 0 :(得分:40)
NaN
不等于自己,所以
double i = Double.NaN;
但我不认为这是一个很好的面试问题。
来自Java语言规范的引用:
NaN是无序的,所以:
- 如果其中一个或两个操作数均为
<
,则数值比较运算符<=
,>
,>=
和false
将返回NaN
(§) 15.20.1)。- 如果任一操作数为
==
,则等于运算符false
将返回NaN
。特别是,如果(x<y) == !(x>=y)
或false
,x
将为y
NaN
是!=
。- 如果任一操作数为
true
(第15.21.1节),则不等式运算符NaN
将返回x!=x
。特别是true
x
当前NaN
{{1}} 是{{1}}。