while循环java中的死代码

时间:2017-12-05 14:48:08

标签: java loops

如果死代码在java中是非法的,为什么以下代码编译正常而没有任何编译时错误:

int i= 5;

while (i<2) {
  //some code here
}

由于while条件没有得到满足,它永远不会进入循环,所以我认为这应该是死代码。但它正在编译完美。

2 个答案:

答案 0 :(得分:3)

Java有一套非常严格定义的规则,用于在编译时定义可达性。 (请注意,程序永远不能完全了解。)

你的案例不是其中之一,所以汇编通过。

(如果可达性规则不断变化会令人烦恼,因为这会导致代码在连续版本更新时中断。)

答案 1 :(得分:1)

如果不运行程序,Java无法确定变量的值。如果它运行您的程序,则可能无法终止。因此,没有通用的方法来确定该循环是否总是运行。总是存在编译器出错的情况,因此它使用基本的启发式方法来处理简单的情况,并将其留在那里。

Further reading