4 java
例1:
public class ExampleWhile {
public static void main(String args[]) {
int a = 10, b = 20;
while (a < b)
{
System.out.println("hello");
}
System.out.println("hi");
}
}
Run Code Online (Sandbox Code Playgroud)
例2:
public class ExampleWhile2 {
public static void main(String args[]) {
while (true)
{
System.out.println("hello");
}
System.out.println("hi"); // Compile time error saying unreachable statement
}
}
Run Code Online (Sandbox Code Playgroud)
为什么示例1在没有错误的情况下运行时,示例2中存在编译时错误?
Men*_*ena 10
因为编译器"聪明"足以知道这while(true)是一个无限循环,因此System.out.println("hi");永远不会被执行.
即使在确定方法范围时,用变量推断相同也不够聪明.
使用编译时常量(static final int使整数成为编译时常量.编译时常量将作为字节代码本身的一部分提供),这是另一个故事:
static final int A = 0;
static final int B = 1;
public static void main(String[] args) {
while (B > A) {
}
// won't compile!
System.out.println("Foo");
}
Run Code Online (Sandbox Code Playgroud)