error: unreachable statement
为什么不打印hello world?
public class Main
{
public static void main(String[] args) {
final int a=10,b=20;
while(a>b){
System.out.print("Message");
}
System.out.println("Hello World");
}
}
代码中的a>b
是一个所谓的常量表达式,因为a
和b
是final
并被赋值为文字值(如果它被赋值为另一个常量表达式,则同样适用)。Java编译器在编译期间计算这些常量表达式。因为它的求值为false
,所以它决定永远不会执行while
循环,因此循环的内容是"不可达语句",并且编译失败并报错。
它从不打印&;Hello world &;,因为编译失败,所以代码永远不会运行。打印发生在运行时,而不是编译时。
因为您将a
和b
设置为final,所以java编译器看到:
while(a > b)
永远不会为真。因为它在运行程序之前就知道,它不会让您保留这些代码。也就是说,你必须删除while,或者删除变量a
和b
之前的final
。