【发布时间】:2020-02-29 04:56:54
【问题描述】:
在下面的语句中,我们将得到无法访问的语句错误。我知道什么 是该错误背后的原因。
for(;false;)
System.out.println("Unrechable statement");
我的问题是为什么我们不会在下面的语句中得到错误。
boolean b = false;
for(;b;)
System.out.println("NO error");
【问题讨论】:
标签: java
在下面的语句中,我们将得到无法访问的语句错误。我知道什么 是该错误背后的原因。
for(;false;)
System.out.println("Unrechable statement");
我的问题是为什么我们不会在下面的语句中得到错误。
boolean b = false;
for(;b;)
System.out.println("NO error");
【问题讨论】:
标签: java
原因是编译器会认为b 可能会被您的程序或线程的其他部分从其先前的值更改为其他值,即使您的程序实际上并没有更改@987654322 @ 但编译器不会在编译时检测到它。
澄清可能只是将 b 设为 final 并看到你会得到同样的错误,因为编译器会注意到 b 是 final 并且不能被程序的其他部分更改,因此将 false 视为 @987654326 的最终值@& 因此会产生错误。
final boolean b = false;
for(;b;)
System.out.println("NO error"); //error: unreachable statement
【讨论】: