while(i!= i){} - 是否可能有一个始终为真的赋值

Bon*_*hew 13 java variables variable-assignment while-loop

最近我接受了一家软件公司的采访,在技术能力回合中询问了以下问题:

以这样的方式声明我,条件总是为真:

while(i != i) {
}
Run Code Online (Sandbox Code Playgroud)

在Java中技术上是否可以分配这种东西?

DAl*_*Ale 41

NaN 不是等于自己,所以

double i = Double.NaN;
Run Code Online (Sandbox Code Playgroud)

但我不认为这是一个很好的面试问题.

引用Java语言规范:

NaN是无序的,所以:

  • 数值比较运算<,<=,>,和>=返回false如果任一个或两个操作数是NaN(§15.20.1).
  • 如果任一操作数为,则等于运算符==返回.具体而言,将是如果或 为.falseNaN(x<y) == !(x>=y)falsexyNaN
  • 如果任一操作数为(§15.21.1),则不等式运算符!=返回.尤其是当且仅当 是.trueNaNx!=xtruexNaN

  • @ScaryWombat在这里检查:/sf/ask/617381691/在答案中有指向Java文档的链接:) (2认同)