“while (i == i) ;” 怎么可能是单线程应用程序中的非无限循环?
2022-08-31 07:56:09
我只是有一个我无法回答的问题。
假设您在Java中有这个循环定义:
while (i == i) ;
如果循环不是无限循环并且程序仅使用一个线程,则的类型和值是什么?i
i
我只是有一个我无法回答的问题。
假设您在Java中有这个循环定义:
while (i == i) ;
如果循环不是无限循环并且程序仅使用一个线程,则的类型和值是什么?i
i
double i = Double.NaN;
Double.equals() 的 API 拼出了答案:“Double.NaN==Double.NaN 的值为 false”。这在 Java 语言规范的“浮点类型、格式和值”下进行了详细说明:
NaN
是无序的,因此数值比较运算符 、 、 和 返回(如果其中一个或两个操作数都是 )。如果任一操作数为 ,则返回相等运算符;如果任一操作数为 ,则返回不等运算符。特别是,x!=x
为真
,当且仅当x
是NaN
,并且将是 if 或 是 。<
<=
>
>=
false
NaN
==
false
NaN
!=
true
NaN
(x<y) == !(x>=y)
false
x
y
NaN