关于#java#的问题:为什么while循环条件里用(1==2)就报错,说“无法访问的语句”


public class output
{
    public static void main(String[] arg)
    {
        int c=0;
        int a=1,b=2;
        while(a==b)
        {
            System.out.println("1");
            c=1;
            break;
        } 
        if(c==0)
            System.out.println("2");
    }
}

while(a==b) 编译运行是没有问题的,while(1==2)编译无法通过,除非更改编译器的异常等级,“无法访问的语句”(unreachable statement)表示永远也不可能会执行,不管这里面的代码对我们写代码的人有什么用,这样完全不可能执行的代码对于编译器来说是完全无用的,就是错误的

应该不会报错,只是会提示你,a==b,the result is always false,无效代码,可以运行的

因为1一直不等于2,应该是报了个warning给你,告诉你第一个while永远也执行不到
有帮助望采纳

你用==肯定是不行的,1==2这两个数字没有声明,没有存在内存中,==这个运算符相当于是比较内存地址。

idea编译器自动的提醒
举个例子如果你写
if(true){
return;
}
sout("1");
从return后面开始一定执行不到sout("1");所以编译器肯定会给你报提示的

难道是编译器的原因?比较常量和比较变量在编译器看来是两回事

编译器设置的问题,语法上没有任何问题。
这属于dead code。
不是所有的编译器都会报错。