为什么下面的内容会引发错误?
for(; 0 ;) System.out.println("guess"); // or
for(;false;) System.out.println("guess"); // or
for(; 1 ;) System.out.println("guess");但是,以下代码运行正常(无限):
for(;true;) System.out.println("guess");为什么它适用于true,而不适用于false
发布于 2015-01-08 16:48:40
Java在循环头中需要一个布尔值作为第二个参数,它计算语句,如果语句返回true,jvm将运行循环体的代码,而不是跳过主体。
0和1显然不是布尔值,也没有定义可以计算的语句(如x< y),而且由于java是一种静态的强类型语言(与Python或Perl不同),所以它不能将int转换为布尔值,因此会崩溃。
编辑:如果以语句形式提供"false“,JVM会注意到永远无法到达循环体,这将导致运行时错误。
发布于 2015-01-08 18:25:19
与C不同,在Java中,true和false对应于boolean类型值,其中1和0对应于int (实际上,在C中没有boolean声明类型,布尔检查是基于整数比较完成的。在Java中,事情是不同的)。
https://stackoverflow.com/questions/27845091
复制相似问题