Java final关键字导致error: unreachable语句.为什么不打印hello world ?<


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是一个所谓的常量表达式,因为abfinal并被赋值为文字值(如果它被赋值为另一个常量表达式,则同样适用)。Java编译器在编译期间计算这些常量表达式。因为它的求值为false,所以它决定永远不会执行while循环,因此循环的内容是"不可达语句",并且编译失败并报错。

它从不打印&;Hello world &;,因为编译失败,所以代码永远不会运行。打印发生在运行时,而不是编译时。

因为您将ab设置为final,所以java编译器看到:

while(a > b)

永远不会为真。因为它在运行程序之前就知道,它不会让您保留这些代码。也就是说,你必须删除while,或者删除变量ab之前的final

最新更新