public class mm { 
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,请问是怎么算的,谢!

解决方案 »

  1.   

    输出的结果不是已经很明显了吗?先计算 for 的初始值(只有一次),接着判断是否满足条件值,满足做循环体内。一次循环完成后,更改循环迭代的值,再判断是否满足条件,如此循环下去。
      

  2.   


    +-----+      +-----+       +-----+
    | 初值 | ---> | 条件 | <--- | 迭代 |
    +-----+      +-----+       +-----+
                  |  ↓ 满足条件     ↑
                  | +-------+       |
        不满足条件 | | 循环体 | -----+
                  | +-------+
                  ↓
                  退出循环
      

  3.   

    for语句中的最第三个判断表达式是在循环体执行后才执行的!!!记住这一点答案就出来了
      

  4.   

    循环三次!第三次时在 foo(b)时 return;
      

  5.   

    在for里:
    ·第一个语句初始化只在首次进入循环时进行一次
    ·第二个条件判断每次都进行
    ·第三个语句除了第一次每次都进行
      

  6.   

    在for循环里:
    1.   i=0 foo('a'):输出:a;
    2.      foo('b') :输出:b;
    3.  i=1 
    4.   foo('d'):输出: d;
    5.  foo('c'):输出: c;
    6.  foo('b'):输出:b;
    7.  i=2
    8.   foo('d'):输出: d;
    9.  foo('c'):输出: c;
    10.  foo('b'):输出:b;
    判断 i<2
    退出循环 结果:abdcbdcb;
    over!
      

  7.   

    for(a;b;c){
    d;
    }
    等于
    a;
    while(b){
    d;
    c;
    }
      

  8.   

    上面回答的很好,要把FOR的执行顺序搞清楚