大家看看这题的答案是什么,说说理由
1. public class Test {
2. static boolean foo(char c) {
3. System.out.print(c);
4. return true;
5. }
6. public static void main( String[] argv ) {
7. int i =0;
8. for ( foo('A'); foo('B')&&(i<2); foo('C')){
9. i++ ;
10. foo('D');
12. }
13. }
14. }

解决方案 »

  1.   

    答案是:
    ABDCBDCB要理解为什么就要弄清楚for循环的运行机理了。
    首先我们知道这里for循环执行两次,第三次退出。第一次,首先执行foo('A')为初始化,打印出A在执行foo('B')&&(i <2)打印出B,第一次for不会执行 foo('C'),就行for(i=0;i<2;i++)中第一次不会执行i++一样。所以接下来执行 foo('D'); 输出D。然后是执行foo('C')),输出C。
    接下来做第二次for循环,这次for循环不会执行初始化工作了,当然就不执行foo('A')。所以,然后就执行foo('B'),输出B。然后是执行foo('D')输出D,然后执行foo('C'),输出C
    第三次,当判断到foo('B')&&(i <2)的时候因为i=2了,所以先输出B后退出循环。理解for循环的执行步骤就不难解决此问题。注重基础的学习。
      

  2.   

    其实我想的答案跟你一样,下面是华为的4个答案选项:
    A. ABDCBDCB
    B. ABCDABCD
    C. Compilation fails.
    D. An exception is thrown at runtime.我想华为的面试题目不会这么简单,所以我不敢确信我的答案
      

  3.   

    朋友在好看看 for循环的结构   条件里第一个分号只在第一次进入for循环的时候执行一次
      

  4.   

    for(表达式1;表达式2;表达式3)
    循环体语句;
    表达式1:初始表达式,用于在循环开始前,为循环变量设置初始值。  说的是这个初始化。与对象 没有关系。
    表达式2:循环控制逻辑表达式,他控制循环执行条件,决定循环次数。
    表达式3:循环控制变量修改表达式。
    执行:表达式1,表达式2,循环体语句,表达式3,表达式2,循环体语句,表达式3,表达式2(false).
      

  5.   


    又进来了,回答你的问题吧
    执行 for( foo('A'); foo('B')&&(i <2); foo('C'))执行这个for循环,就像执行for(i=0;i<2;i++)一样i=0只是初始化工作,只执行一次,与之对应的foo('A')只执行一次,而foo('A')当然是方法调用了。
    体会一下吧