首页 > 解决方案 > while 和 if 语句中的代码无法访问

问题描述

下面的代码无法编译,因为x=3无法访问

while (false) { x=3; }

但为什么for( int i = 0; i< 0; i++) {x = 3;}编译得很好?在此代码x=3中也是无法访问的。

标签: java

解决方案


请参阅JLS 14.21,无法访问的语句

包含的语句 [在 while 循环中] 是可到达的,当且仅当 while 语句可到达且条件表达式不是值为 false 的常量表达式时。

false是一个常量表达式,其值为false,因此x=3;不可访问。

包含的语句 [在基本的 for 循环中] 是可访问的,前提是 for 语句是可达的并且条件表达式不是一个值为 false 的常量表达式。

i<0不是常量表达式,因此包含的语句被认为是可访问的,即使它实际上不可访问。


推荐阅读