当前位置: 首页 > 面试题库 >

怎么可能“ while(i == i);” 是单线程应用程序中的非无限循环?

吴鸿彩
2023-03-14
问题内容

我有一个我无法回答的问题。

假设您在Java中具有以下循环定义:

while (i == i) ;

如果循环不是无限循环并且 程序仅使用一个线程,* 则的类型i和值 什么?i *


问题答案:
double i = Double.NaN;

Double.equals()的API
给出了答案:“
Double.NaN == Double.NaN的值为false”。Java语言规范中的“
浮点类型,格式和值
” 对此进行了详细说明:


NaN是无序的,所以数值比较运算<<=>,和>=
返回false如果任一或两个操作数都NaN。等于运算符==返回false如果操作数是NaN和不平等运营商!=的回报true,如果一个操作数的NaN
特别是,x!=xis true当且仅当xisNaN,并且 is(x<y) == !(x>=y)将当falseif
xyis NaN



 类似资料:
  • 问题内容: 我不明白为什么这个职位增加方程不增加。我以为在+=操作之后,该值将增加1,然后围绕i的第二次将具有1值。但是输出是一个零零的无限循环。有谁能解释为什么“ i”不增加。 问题答案: @ njzk2的答案是正确的,但指出正确的 原因 很有用。 还有其他可能性-例如,为什么Java在分配后不执行postincrement运算符?(答案:因为那不是Java语言设计者选择的) Java语言规范第

  • 我肯定误解了整个线程的事情,因为我觉得这个说法令人费解。如果一个程序是单线程的,它如何并发地执行任何操作?如果服务器是单线程的,那么为什么Redis操作是原子的呢? 谁能解释一下这个问题吗?

  • 本文向大家介绍为什么“ while(i ++ 相关面试题,主要包含被问及为什么“ while(i ++ 时的应答技巧和注意事项,需要的朋友参考一下 正如其他人指出的那样,该测试在许多方面都有缺陷。 你没有告诉我们到底 如何 ,你做了这个测试。但是,我试图实施这样的“幼稚”测试(无冒犯): 当使用默认设置运行它时,似乎有很小的差异。但是,当您使用该标志运行基准测试时,基准测试的 真正 缺陷就变得显而

  • 在第5章 管理ElasticSearch的 选择正确的directory实现类——存储模块 一节中讲到了存储类型,即用户可以根据业务需求来配置存储模块。但是我们并没有介绍存储模块的每一个知识点——至少没有介绍I/O限流的相关知识。 控制I/O流量

  • 最近我与一家软件公司进行了一次面试,在技术能力方面,我问到了以下问题: 以这样一种方式声明i,即条件始终为真: 在java中,技术上是否可以分配这种类型的东西??