public final class Test
{
    class Inner {
        void test() {
            if (Test.this.flag); {sample();}
        } 
    }
    private boolean flag = false;
    public void sample() {System.out.println("Sample");}
    public Test() {(new Inner()).test();}
    public static void main(String args []) {
        new Test();
    } 
}The result is "Sample",Why?????

解决方案 »

  1.   

    if (Test.this.flag); {sample();}
    改为:
    if (Test.this.flag) {sample();}
    中间的分号去掉。
      

  2.   

    if (Test.this.flag); {sample();}
    改为:
    if (Test.this.flag) {sample();}
    中间的分号去掉。
      

  3.   

    问题就在那个“;” 上面  ,不过不是去掉   lz问的是为什么? The result is "Sample",Why?????答案就在那个 “;”首先执行 if();
     在执行  { sample(); }  //这是一个代码块   根if()没有任何的逻辑关系
                                //  不管  if()真假    {}  都会执行
      

  4.   

    不好意思  忘说了一点jian_2006() 
    “为什么我运行后什么都没有显示的!”因为 你把 “;”  去掉    if()   就和  {}  代码块 有逻辑关系了 又因为    flag=false;   所以  {}  代码块不会被执行  因此  就是没有显示了 :)