首页 > 解决方案 > Java 编译器搜索不会仅仅因为循环中存在中断而给出无法访问的语句错误吗?

问题描述

这不编译,给出一个unreachable statement错误:

  while(true)
  {
  }
  return null;

虽然这没有任何编译问题,但我们知道它等同于上面的代码段:

  while(true)
  {
   if(4>5)
       break;
  }
  return null;

编译器是否只是简单地搜索一个 break 语句并认为循环可能会以某种方式终止,因此不担心它?

标签: javaloopscompilationbreak

解决方案


编译器不会评估条件语句中的表达式。即使你写:

while (true) {
    if (false) {
        break;
    }
}

它不会被检测为无限循环。


推荐阅读