黑马程序员技术交流社区
标题:
高手们,解释一下这个简单的问题吧?为什么不是ABCD..
[打印本页]
作者:
飞舞❤心动
时间:
2012-5-26 11:27
标题:
高手们,解释一下这个简单的问题吧?为什么不是ABCD..
public class Test20 {
static boolean foo(char c) {
System.out.print(c);
return true;
}
public static void main(String[] args) {
int i = 2;
for (foo(‘A’); foo(‘B’) && (i < 4); foo(‘C’)) {
i++;
foo(‘D’);
}
}
}
为什么会显示这样,不太懂!
作者:
马林贺
时间:
2012-5-26 12:16
for(int i=0;i<4;i++)
你可以根据我上面写这个for循环看看是for循环是怎么执行的
第一次循环
定义了变量 i
然后判断 i 是不是小于4
然后循环
第二次循环
先让 i++
然后判读 i 是不是小于
小于继续循环
然后看看你写的for循环
for (foo(‘A’); foo(‘B’) && (i < 4); foo(‘C’)) {
i++;
foo(‘D’);
}
我直接给你解释 for 是怎么循环的吧!
for 循环第一次的时候
执行 foo('A') 然后 打印了 A
然后执行 foo('B') 打印了 B
然后判断(i<4)小于 执行循环里的内容
i++ 变成了 3
执行循环里的内容 foo('D') 打印了 D
继续循环
然后执行 foo('C') 打印了 C
然后执行 foo('B') 打印了 B
判断 (i <4) 小于继续执行
++ 变成了 4
执行循环里的内容 foo('D') 打印了 D
继续循环
然后执行 foo('C') 打印了 C
然后执行 foo('B') 打印了 B
判断 (i <4) 不小于4 退出循环
结果是 :ABDCBDCB
作者:
张晨
时间:
2012-5-26 12:47
for(a;b;c)
{
d;
}
其实是考for 语句执行顺序:
第一次执行顺序 a(初始化),b(检测条件是否符合) , d(符合则执行语句),c(一般为自增操作,或者也有其他条件)
后面的执行顺序 b(检测条件是否符合) , d(符合则执行语句),c(一般为自增操作,或者也有其他条件)
作者:
武剑峰
时间:
2012-5-26 14:30
本帖最后由 武剑峰 于 2012-5-26 14:37 编辑
for (foo('A'); foo('B') && (i < 4); foo('C')) {i++; foo('D');}
语句执行的顺序是
1、先进入第一个分号前边的foo('A') 打印出了A
2、然后进入第二个分号前边第一个分号后边的条件里面判断 foo('B') && (i < 4) 打印出了B,条件为真
3、进入循环体i=3,并执行foo('D') 打印出了D
4、然后进入第二个分号后边foo('C')打印出了C
5、进入第二个分号前边第一个分号后边的条件里面判断 foo('B') && (i < 4) 打印出了B,条件为真
6、进入循环体i=4,并执行foo('D') 打印出了D
7、然后进入第二个分号后边foo('C')打印出了C
8、进入第二个分号前边第一个分号后边的条件里面判断 foo('B') && (i < 4) 打印出了B,条件为假跳出循环,
最后结果为:ABDCBDCB
如果循环改为:
for (foo('A'); i < 3; foo('D')) {
foo('B');
i++;
foo('C');
}
结果就是:ABCD
作者:
飞舞❤心动
时间:
2012-5-26 16:08
马林贺 发表于 2012-5-26 12:16
for(int i=0;i
谢谢了,明白了!
作者:
马林贺
时间:
2012-5-26 16:09
飞舞❤心动 发表于 2012-5-26 16:08
谢谢了,明白了!
没事! 互相学习嘛。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2