public class j1 {
     static boolean foo(char c){
    System.out.print(c);
    return true;
}
public static void main(String []args){
    int i=0;
    for(foo('A');foo('B')&&(i<2);foo('C'))
     {
     i++;
     foo('D');
    }
}  
}得到什么样的结果,为什么会是这个结果。能详细说下执行顺序么
  
  

解决方案 »

  1.   

    首先foo(A),输出A
    接着foo(B),输出B,返回true
    for条件 true && (i<2) 为true,满足循环条件,进入循环体
    i++变成1
    foo(D),输出D
    然后循环累增处理,执行foo(C)输出C
    然后继续判断循环条件,foo(B)输出B,i<2为true,for循环条件成立,进入循环体
    i++变为2
    foo(D)输出D
    然后循环累增处理,执行foo(C)输出C
    然后继续判断循环条件,foo(B)输出B,i<2为false,循环结束
    所以程序输出结果是
    ABDCBDCB
      

  2.   

    结果是 ABDCBDCB 考查for循环结构;for(foo('A');foo('B')&&(i<2);foo('C'))中 
    首先是赋初值的foo('A')返回A
    然后判断条件foo('B')&&(i<2);返回B;且成立;
    进入循环体,执行i++;和foo('D')返回D,i值变为1;
    然后进入循环控制变量的foo('C')返回C;此时一个循环完成,进入下一循环:
    判断条件foo('B')&&(i<2);返回B;成立;
    进入循环体,执行i++;和foo('D')返回D,i值变为2;
    然后进入循环控制变量的foo('C')返回C;此时第二个循环完成,进入下一循环:
    判断条件foo('B')&&(i<2);返回B;但foo('B')&&(i<2)条件不成立,for循环结束!
      

  3.   

    ABDCBDCB,主要是for语句的执行流程,例如
    for (initialization; condition; modification) {
        // 代码体
    }
    先执行initialization,然后执行代码体,然后执行modification,
    然后再执行condition,若满足条件则再执行代码体,然后依此类推;若
    不满足条件则跳出for语句。
    还有,楼主对&&和||条件判断的所谓“优化”知道吧,比如:
    condition1&&condition2,若是condition1为假则condition2就不会执行;
    condition1||condition2,若是condition1为真则condition2就不会执行;
      

  4.   

    可以使用javap命令分析一下编译后的字节码,如http://tech.techweb.com.cn/thread-513346-1-1.html