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