为什么java for循环的空条件语句的计算结果为true?

为什么java for循环的空条件语句的计算结果为true?,java,for-loop,conditional,Java,For Loop,Conditional,如果有人在网站的某个地方或其他地方问过这个问题,我深表歉意 我想知道是否有人知道为什么java会选择解析器/编译器将for(;;){}循环中的空条件语句计算为true,而不是null或void 由用户@Mchi链接 每次循环迭代前要计算的表达式。如果此表达式的计算结果为true,则执行语句。此条件测试是可选的。如果省略,则条件的计算结果始终为true。如果表达式的计算结果为false,则执行跳到for构造后的第一个表达式 我只是好奇。为了控制循环,条件语句必须是boolean类型,就像if()

如果有人在网站的某个地方或其他地方问过这个问题,我深表歉意

我想知道是否有人知道为什么java会选择解析器/编译器将for(;;){}循环中的空条件语句计算为true,而不是null或void

由用户@Mchi链接

每次循环迭代前要计算的表达式。如果此表达式的计算结果为true,则执行语句。此条件测试是可选的。如果省略,则条件的计算结果始终为true。如果表达式的计算结果为false,则执行跳到for构造后的第一个表达式


我只是好奇。

为了控制循环,条件语句必须是
boolean
类型,就像
if()
while()
语句中的表达式必须是
boolean
类型一样

boolean
的唯一有效值是
true
false
。因此,
null
void
不适用,它们没有任何意义


至于空条件语句,在两个可能的值
true
false
中,他们选择了
true
,因为绝对不需要一个根本不会循环的循环,而在很多情况下,我们需要一个永远循环(或直到
中断
)的循环

相反的结果应该是错误的。不是NULL或VoIDE,因为java继承了C++的这个特性,它继承了C和某人在1970年前提出的一个想法,即<>代码>(;;)<代码>应该是一个有限的循环。请正确地标记您的问题。Java和Javascript是不同的语言。(在Java中……循环不会“计算”任何东西。它不是一个表达式。)你指的是Java还是Javascript?对于循环构造,选择
true
作为默认值是有意义的。@HuguesMoreau是的,我修改了我的答案以表明这一点。谢谢,我不知道你说的“我想不是”是什么意思。这不是一个“是/否”类型的问题。“因为绝对不需要一个完全不循环的循环”抱歉的意思是我同意这句话-我想没有