A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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’);

}

}

}

为什么会显示这样,不太懂!

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览

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






  










评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1 赞一个!

查看全部评分

回复 使用道具 举报
for(a;b;c)
{
    d;
}
其实是考for 语句执行顺序:
第一次执行顺序   a(初始化),b(检测条件是否符合) , d(符合则执行语句),c(一般为自增操作,或者也有其他条件)
后面的执行顺序  b(检测条件是否符合) , d(符合则执行语句),c(一般为自增操作,或者也有其他条件)

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 武剑峰 于 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 12:16
for(int i=0;i

谢谢了,明白了!
回复 使用道具 举报
飞舞❤心动 发表于 2012-5-26 16:08
谢谢了,明白了!

没事! 互相学习嘛。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马