【发布时间】:2016-08-09 11:28:47
【问题描述】:
有一个练习题,我有以下代码:
while (false) { x=3; }
x=3 是无法访问的代码,我真的不明白为什么。有一段类似的代码:
if (false) { x=3; }
这是完全有效的。
可能是一个菜鸟问题,或者我只是错过了一些东西,但如果你能帮助我理解为什么那会很棒,谢谢!
我特意问一下if和while语句的区别,因为同一行代码改成if,是有效的,会编译的。
【问题讨论】:
-
代码不可访问意味着编译器认为不可能没有声明
x=3;的路径,因为while ( false )永远不可能是true -
关键是:
if(false)也不能。真正的问题是:为什么编译器对 if 语句没有问题。 -
问题的第二部分,请参考stackoverflow.com/a/8570302/1743880
-
请参考上述问题。他们通过引用 Java 规范来解释 if 和 while 语句的这种行为。见stackoverflow.com/questions/20299914/…
标签: java unreachable-code