日期:2014-05-20  浏览次数:20647 次

有点不明白这个for循环。
public class Test
 {
        static boolean foo(char c) 
       {
            System.out.print(c);
            return true;
      }
       public static void main(String[] argv) 
       {
            int i = 0;     
            for (foo('A'); foo('B') && (i < 2); foo('C')) 
           {
                i++;
                foo('D');
           }
     }
}


得到的结果是ABDCBDCB
好像是for中先执行foo('A'),再执行 foo('B') && (i < 2);,再进入循环体的结果。但我怎么觉得应该是先foo('A')就应该进入循环体执行i++;与 foo('D')呀。比如for(i=0; i<2; i++)吵就是执行了i=0后就进入下面的代码块吗?然后再到i++这里?
               
------解决方案--------------------
for循环三个元素,第一个是初始值,第二个是条件判断,第三个是条件改变。
顺序是这样的,第一次进入循环时,先初始值(1),然后进行条件判断(2),如果满足,则进入循环内,循环内执行完了,再回到条件改变(3),然后再进行条件判断(2),满足进入,不满足,条件改变(3),如果此循环。楼主不要怀疑程序,事实它就是这样运行的。
------解决方案--------------------
先执行for的前两个个foo,然后i++,再执行内部foo,再执行for的第三个foo('C')