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,则数值比较运算符
返回=
(§15.20.1)李>false
- 如果任一操作数为
,则相等运算符NaN
返回==
。特别是,如果false
或x
是y
李>NaN
- 不等式运算符
=如果任一操作数为
(§15.21.1),则code>返回NaN
。特别是,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非常感谢:)