java - Java 编译器搜索不会仅仅因为循环中存在中断而给出无法访问的语句错误吗?
问题描述
这不编译,给出一个unreachable statement
错误:
while(true)
{
}
return null;
虽然这没有任何编译问题,但我们知道它等同于上面的代码段:
while(true)
{
if(4>5)
break;
}
return null;
编译器是否只是简单地搜索一个 break 语句并认为循环可能会以某种方式终止,因此不担心它?
解决方案
编译器不会评估条件语句中的表达式。即使你写:
while (true) {
if (false) {
break;
}
}
它不会被检测为无限循环。
推荐阅读
- angularjs - AngularJs 获得授权请求
- macos - 浏览器未识别主机条目
- php - 困难的 PHP 嵌套正则表达式
- android - 使用 Navigation 架构组件时如何与其他 Fragment 交互?
- javascript - 从派生类访问属性
- java - Java 声音 API。从混音器获取支持的音频格式
- c++ - VS2017 链接器问题:LNK1181 无法打开输入文件“glew32s.lib\\glew32s.lib\\glew32s.lib\\”
- hadoop - 如何跟踪 hadoop ALS 的进度?
- android - java.lang.RuntimeException:正在停止已停止的活动:
- excel - Excel VBA 引用是在工作簿还是客户端计算机中进行的?