别直接编译运行,猜猜结果是什么。直接回复结果再自己运行。
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');
}
}
}

解决方案 »

  1.   

    ABDCBDCB
    for( a ; b ;  c)
    for循环中,a处在刚进入循环时运行,之后就不运行了。因此A只输入一次
    b处的条件语句在循环体每运行一次执行一次。
    c处的在b处条件为true的时候才运行。b处为false时就不运行了
    因此  把输出结果隔开来看比较清楚。
    A BDC BDC B
      

  2.   

    如果条件换成(i < 2)&&foo('B')大概更容易错些 
      

  3.   

    java能否在debug过程中像C/C++一样,看汇编代码?
      

  4.   

    ABDCBDCB
    应该是这样
    A是for循环初始化
    B是判断
    为真输出D
    然后执行输出C
    然后继续判断输出B
    为真再输出B
    并输出D
    然后执行输出C
    再一次判断输出B
    i等于2
    循环结束
      

  5.   

    ABDCBDCB
    猜对了,O(∩_∩)O~
      

  6.   

    第一次进入for,执行foo('A'),然后判断foo('B') && (i < 2),为true则进入循环体,执行完循环体后就进入foo('C') ,输出结果为ABDC
    第二次直接执行条件foo('B') && (i < 2),为true就进入方法题,然后执行foo('C') ,输出BDC
    第三次循环,执行foo('B') && (i < 2)为false,就跳出循环,结束 ,输出B所以结果为ABDCBDCB
      

  7.   

    猜错了,看来是每次都检查条件,这样的话,对list循环时用list.size()作终止条件不好,因为要执行这个方法很多次
      

  8.   

    A  BDC  BDC  B让我明白了for循环的运行原理~~
      

  9.   

    这题有意思,初学者通过这题能很清晰的了解for循环的运行机制
      

  10.   

    “&&”是短路与,当i变为2时,前面的条件“i<2”是false,后面的foo('B')就不执行了,呵呵,是不是这个意思?最后输出结果为"ABDCBDC",也就是最后的那个foo('B')不必执行了。顶你啊,16楼!
      

  11.   

    哈哈,有C++基础看这么简单得很。。答案就是
    ABDCBDCB
    我不去运行咯
      

  12.   

    主要是关于for循环的机制。有人已经讲解了就不说了。