【发布时间】:2017-04-20 20:21:41
【问题描述】:
A.
int a=10,b=20;
for(int i=0;a>b;i++)
{
System.out.print("aa");
}
System.out.print("bb");
B.
final int a=10,b=20;
for(int i=0;a>b;i++)
{
System.out.print("aa");
}
System.out.print("bb");
问。为什么代码 A 打印输出“bb”而代码 B 返回错误“无法访问代码”?
【问题讨论】:
-
最终变量在运行时永远不能改变,但普通变量可以。所以在 A 有可能到达 for 循环的内部,但在 B 它永远不可能
-
澄清一下,在 A 中,如果中间有一些额外的代码,它理论上可以进入循环。换句话说,除非很明显,否则编译器不会尝试猜测流程。
-
@XtremeBaumer A 和 B 最终变量都没有改变。
标签: java for-loop conditional final