当我编译这段代码时
public static void main(String [] args) {
int x = 0;
while(false)
{
System.out.println(hello);
}
}
它显示编译时错误无法访问代码。
但是当我将这段代码修改为
public static void main(String [] args) {
int x = 0;
boolean result = false;
while(result)
{
x=4;
}
}
工作正常。
有人可以告诉我这种行为背后的原因吗?
这是因为boolean result = false
不是常量表达式,而false
是。如果您尝试下面的代码,它也不会编译,因为result
现在是一个常数:
final boolean result = false;
while(result) { x=4; }
然而这会编译,因为结果不再是常量变量:
final boolean result;
result = false;
while(result) { x=4; }
也可以看看:为什么Java编译器不理解这个变量总是被初始化的? https://stackoverflow.com/questions/13235559/why-does-the-java-compiler-not-understand-this-variable-is-always-initialized进行类似的讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)