编译器并不会做这种检查。如果这样也去检查的话,那需要检查的太多了。例如下面这种等等 boolean b = true;
if (b) return;

解决方案 »

  1.   

    估计搂住是用JDK javac编译的,有些IDE是会报个警告的,比如eclipse,不知道javac有没有类似的选项控制这种检查
      

  2.   

    你的代码不规范!
    我给你规范了一下:static void test() {
    int i;
    if(true){
    i = 8;
    }
    System.out.println(i);

    if(true){ 
    return;
    }
    System.out.println("code");//此处MyEclipse画黄线了,提示dead code,快捷操作为删除
    }
      

  3.   

    2楼版主大大,正解。eclipse的javadoc会报警的,但楼主指的那行在运行时还是会执行,那么下一行就无法访问了。
      

  4.   

    void test() {
    return;
    System.out.println("code");
    }可能我没说清楚,那为何上面这行代码直接就报错,我说的报错不是指警告,而是说 Error
      

  5.   

    这是编译器基于性能考虑没有去检查这种。而其它的 IDE 则提醒我们可能我们写错了代码。
      

  6.   

    这个问题,楼主把return,break,continue之间区别的搞清,没必要在这块纠结。
      

  7.   

    这个肯定是报错的呀,return后面不能再跟语句了。至于你说的那个:     if(true)
         return;
        System.out.println("code");这段代码虽然从逻辑上说最后一句永远不可能执行,但是在编译的时候并不会做这种检查。编译器认为最后一句话当条件判断为错误的时候是可以执行的,所以不会给出错误提示。当然某些IDE会给出警告,但不是错误。
      

  8.   

    这个肯定是报错的呀,return后面不能再跟语句了。至于你说的那个:     if(true)
         return;
        System.out.println("code");这段代码虽然从逻辑上说最后一句永远不可能执行,但是在编译的时候并不会做这种检查。编译器认为最后一句话当条件判断为错误的时候是可以执行的,所以不会给出错误提示。当然某些IDE会给出警告,但不是错误。你说得完全错误,这里编译器已经确定条件肯定是为真的了,我用的是 “true” 这个字面量,而不是一个"true"引用变量, 你肯定没有写过 while(true) 这种代码, while(true) 后面有代码也不能通过编译
      

  9.   

    这个肯定是报错的呀,return后面不能再跟语句了。至于你说的那个:     if(true)
         return;
        System.out.println("code");这段代码虽然从逻辑上说最后一句永远不可能执行,但是在编译的时候并不会做这种检查。编译器认为最后一句话当条件判断为错误的时候是可以执行的,所以不会给出错误提示。当然某些IDE会给出警告,但不是错误。你说得完全错误,这里编译器已经确定条件肯定是为真的了,我用的是 “true” 这个字面量,而不是一个"true"引用变量, 你肯定没有写过 while(true) 这种代码, while(true) 后面有代码也不能通过编译
    大哥你真敢说话呀,用过java多线程的谁没有写过while(true)语句,while(true)是一个死循环,if(ture)是么?
      

  10.   

    这个肯定是报错的呀,return后面不能再跟语句了。至于你说的那个:     if(true)
         return;
        System.out.println("code");这段代码虽然从逻辑上说最后一句永远不可能执行,但是在编译的时候并不会做这种检查。编译器认为最后一句话当条件判断为错误的时候是可以执行的,所以不会给出错误提示。当然某些IDE会给出警告,但不是错误。你说得完全错误,这里编译器已经确定条件肯定是为真的了,我用的是 “true” 这个字面量,而不是一个"true"引用变量, 你肯定没有写过 while(true) 这种代码, while(true) 后面有代码也不能通过编译
    while(true)后面有代码也不能通过编译?你确定?只要while(true)里面有break语句就可以通过编译呀
      

  11.   

    if()条件在编译的时候,其实是不会判断你的条件到底是true还是false,所以当你在if(true) return;后面继续写代码,编译时是判断如果if为false,则后面的代码还有机会执行。但是你直接在if(true){return;再写代码};是肯定会报错的。
      

  12.   

    楼主有点钻牛角尖,还从来没有见过直接一个return后面有Java代码,if语句中有return倒是很正常的,return前有if(true)和前面没有逻辑判断不是等价的,虽然if(true)肯定会判断通过
      

  13.   

    是不是要表达这个意思,if()里面的内容在没有运行的时候是没有判断能力的(当然像myeclipse这种工具会自动检查)。而编译器检查你的代码的时候是检查格式或者一些简单的错误并没有逻辑判断能力,如17楼所说,很多错误只能运行时检测出来!所以编译器当成普通的if判断,并没有语法错误,所以没报错。
      

  14.   

    import java.io.PrintStream;public class Main1
    {
      public static void main(String[] args)
      {
        new Main1().test();
      }  void test()
      {
        int i = 8;
        System.out.println(i);
      }
    }这是反编译后的代码
      

  15.   

    if(true)   if(false)这样的代码都会被干掉。没啥意思