黑马程序员技术交流社区

标题: 【华为面试题】for语句的执行顺序,你理解有多深? [打印本页]

作者: ameanboy    时间: 2016-3-17 16:34
标题: 【华为面试题】for语句的执行顺序,你理解有多深?
本帖最后由 ameanboy 于 2016-3-17 22:59 编辑
  1. public class Test2 {
  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(65;88&&(i<2);67)
  9.                for (foo('A'); foo('B') && (i < 2); foo('C')) {
  10.                    i++;
  11.                    foo('D');
  12.                }
  13.             }
  14.         }
复制代码



请问输出结果是什么~~?回复里最好能写清楚执行顺序哦~
A. ABDCBDCB
B. ABCDABCD
C. 编译错误
D. An exception is thrown at runtime.
公布答案了!答案是A ABDCBDCB
  1. //输出结果是:ABDCBDCB
  2. 分析:FOR循环里面讲究的条件要为真,与你的判断式是什么没有关系
  3. 就像这里,虽然是打印的字母,但是却不是false,所以可以执行
  4. 第一次进行循环:
  5. foo('A')打印字母A,(注:这里不是false条件就默认为true条件)
  6. foo('B')打印字母B,i=0,比较(i < 2),条件为true,进行循环体,foo('D')打印D
  7. foo('C')打印字母C
  8. 第二次循环:
  9. foo('B')打印B,i=1,比较(i < 2)为true,进行循环体,foo('D')打印D
  10. foo('C')打印字母C
  11. 第三次循环:
  12. foo('B')打印字母B,i=2,比较(i < 2)为false,退出循环,得结果
  13. */
复制代码






作者: a302550641    时间: 2016-3-17 17:12
不明觉厉···
作者: a7866443121    时间: 2016-3-17 18:03
不知所云{:3_65:}
作者: 蒋明洁    时间: 2016-3-17 18:23
看不懂!
作者: monZhang    时间: 2016-3-17 22:18
for(表达式1;表达式2;表达式3){
      语句;
}

执行顺序是        表达式1——表达式二——语句——表达式三——表达式2——语句——表达式3——表达式二.......(在每次表达式2都是true的情况下)
作者: 骓逝    时间: 2016-3-17 22:24
答案是A:ABDCBDCB
首先会执行for语句的第一条初始化语句foo('A'),打印出A这一句只会执行一次,然后走foo('B') && (i < 2)全是true打印出B,然后走{ i++;
                   foo('D');}里面的语句打印出D,然后再走for语句的最后一条foo('C')打印出C,然后再瞳判断语句foo('B') && (i < 2)也全是true,打印出B,再按上一次一样打印出D和C,此时i是2,再走判断foo('B') && (i < 2),fool('B')会打印出B,是true但是后面的i<2是false,所以会跳出for循环来了
作者: 向北_    时间: 2016-3-17 22:41
e.............
作者: lxc358    时间: 2016-3-17 23:03
f先明白for循环各个表达式的特点:表达式1只执行一次,表达式2是条件判断语句判断是否进入循环体,表达式3是控制语句,执行完循环体再执行;
1》2》循环体》3》2?》循环体》3》2》结束
作者: 赵国政    时间: 2016-3-18 00:19
很厉害!
作者: zhang3216858    时间: 2016-3-18 00:54
还没学到这个= =,不过快了
作者: huanlong579    时间: 2016-3-18 01:16
顶一个,复习了下又
作者: and4576sdo    时间: 2016-3-18 01:21
感觉不错啊
作者: wl756071448    时间: 2016-3-18 09:04
又涨知识了,多谢分享
作者: lijiy09    时间: 2016-3-18 11:19
看的有点晕了~
作者: zx7660    时间: 2016-3-18 12:45
好吧...........
作者: 梦→拼搏    时间: 2016-3-18 13:06
涨知识了、
作者: yijincheng    时间: 2016-3-18 20:23
华为两个字还真是吓死人呢。楼上的几个别还没看题就怂了。这题很简单的啊。
作者: fei9ci    时间: 2016-3-18 21:29
涨姿势了,for的循环条件是讲究真否
作者: caiyiq    时间: 2016-3-18 22:00
学习了,6666
作者: ShallDoll    时间: 2016-3-18 22:14
好题目,先复制了慢慢看
作者: Lee♥晓蕾    时间: 2016-3-30 17:29

作者: ZTK12345    时间: 2016-3-30 22:58
还真是不明觉厉
作者: oassuperhan    时间: 2016-3-30 23:14
外层for循环完全是干扰项,直接忽略就是了,其实这题不难的
作者: 452296824    时间: 2016-3-30 23:25
有点头晕。。。。。。。。。。
作者: 可可TKD    时间: 2016-3-31 20:34
厉害...............................
作者: hong940619    时间: 2016-3-31 21:12
这也忒简单了吧
作者: Vintagecheese    时间: 2016-3-31 21:16
赞一个 需要学习
作者: yy0328    时间: 2016-3-31 22:58
一脸懵逼  两脸懵逼




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2