You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中final关键字引发unreachable statement错误,为何无法输出Hello World?

编译错误:unreachable statement 原因解析

你代码里用final修饰了a和b,这俩变量会被编译器当成编译期常量,它们的10和20在编译阶段就固定死了。

再看循环条件while(a > b),10 > 20永远是false,编译器能在编译期直接判断出这个循环的代码块(也就是System.out.print("Message");那一行)永远不会被执行。而Java语法明确规定:不可达的语句不能出现在代码里,所以编译器直接抛出了error: unreachable statement的编译错误。

至于你问为什么无法输出Hello World——因为程序连编译这关都没过,根本没生成可运行的字节码,自然没法运行起来输出内容。其实Hello World那行代码本身是完全可达的,只要把编译错误解决掉,它就能正常输出。

修复方案

  • 要是不需要这个循环,直接删掉整个while代码块就行,代码就能正常编译运行;
  • 要是必须保留循环,就去掉a和b的final修饰符,让它们变成普通变量。这样编译器没法在编译期确定它们的大小关系,循环体就会被判定为可达,编译就能通过。

示例1:删除循环后的代码

public class Main
{
    public static void main(String[] args) {
        final int a=10,b=20;
        System.out.println("Hello World");
    }
}

示例2:保留循环去掉final的代码

public class Main
{
    public static void main(String[] args) {
        int a=10,b=20;
        while(a>b){
            System.out.print("Message");
        }
        System.out.println("Hello World");
    }
}

内容的提问来源于stack exchange,提问作者VIJAY KUMAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:45:29