Java 当(i!=i){}-有可能有一个总是真的赋值吗

Java 当(i!=i){}-有可能有一个总是真的赋值吗,java,variables,while-loop,variable-assignment,Java,Variables,While Loop,Variable Assignment,最近,我与一家软件公司进行了一次面试,在技术能力评估中,我问了以下问题: 我声明条件始终为真: while(i != i) { } 在java中,从技术上讲是否可以分配这种类型的内容???NaN不等于它本身,所以 double i = Double.NaN; 但我认为这不是一个好的面试问题 引用Java语言规范: NaN是无序的,所以: 如果其中一个或两个操作数均为NaN,则数值比较运算符=返回false(§15.20.1) 如果任一操作数为NaN,则相等运算符==返回false。特别是,

最近,我与一家软件公司进行了一次面试,在技术能力评估中,我问了以下问题:

我声明条件始终为真:

while(i != i) {
}

在java中,从技术上讲是否可以分配这种类型的内容???

NaN
不等于它本身,所以

double i = Double.NaN;
但我认为这不是一个好的面试问题

引用Java语言规范:

NaN是无序的,所以:

  • 如果其中一个或两个操作数均为NaN,则数值比较运算符
    =
    返回
    false
    (§15.20.1)
  • 如果任一操作数为
    NaN
    ,则相等运算符
    ==
    返回
    false
    。特别是,如果
    x
    y
    NaN
  • 不等式运算符
    =NaN
    (§15.21.1),则code>返回
    true
    。特别是,
    x=x
    true
    当且仅当
    x
    NaN

为什么不呢?我认为这应该是可能的,因为您之前已经声明了I的值,并且没有在循环中更改它的值。我的直觉是,它可能与Java-8中的lambdas有关。例如,在scala中,我们可以将一个函数分配给一个变量,而变量的实际计算不是在分配之后进行的,而是在计算时进行的。例如,
def i=Math.random
将在每次计算
i
时为i提供不同的值。我不确定Java-8是否也可能有类似的功能。也许post可以让你明白这一点。你有一些java文档吗?@ScaryWombat检查这里:Answare中有一个指向java文档的链接:)@MatthiasBurgerCheers@DAle非常感谢:)