zoukankan      html  css  js  c++  java
  • for(foo('a') ; foo('b') && (i<2);foo('c'))的执行结果

     1     static boolean foo(char c) {
     2         System.out.println(c);
     3         return true;
     4     }
     5 
     6     public static void main(String[] args) {
     7         int i = 0;
     8         for (foo('a'); foo('b') && (i < 2); foo('c')) { 
     9             i++;
    10             foo('d');
    11         }
    12     }

    代码执行结果:a b d c b d c b

    做这道面试题之前我们要了解for语句
      1.各部分执行的顺序
      2.各部分执行的次数
      3.循环的终止条件

    分号之前第一部分是初始化语句也就是foo('a')所以只会执行一次,第二部分是循环终止控制,也就是循环条件当foo('b') && (i<2)为false时条件就会终止,所以循环会执行两次

    第三部分在每次循环完毕时执行,所以执行顺序是先foo('a')所以先打印a,再次执行foo('b')并且判断条件i<2 条件是否满足,满足的话进入循环体,然后i++ i等于1,然后执行foo('d')

    再打印d ,执行完毕再执行foo('c')打印c,这是循环一次的结果 abdc,第二遍循环,因为a是初始化变量所以只执行一次,直接执行循环条件,先执行foo('b')并且判断i<2条件是

    否满足,现在i是1所以条件满足进入循环体,执行i++,再次执行foo('d'),循环完毕执行('c')然后打印c,循环第二遍的结果是bdc,这时循环还会继续执行,因为它还不知道

    i是否小于2,初始化变量不执行,执行循环条件,先执行foo('b')打印b然后判断循环条件,现在i等于2所以i<2的条件不满足,所以循环结束

     

  • 相关阅读:
    RN 各种小问题
    迷宫问题的求解(回溯法、深度优先遍历、广度优先遍历)
    java 对象的初始化流程(静态成员、静态代码块、普通代码块、构造方法)
    java四种访问权限
    八大排序之归并排序
    八大排序之堆排序
    八大排序之选择排序
    八大排序之快速排序
    Java动态代理和cglib动态代理
    类加载器 ClassLoder详解
  • 原文地址:https://www.cnblogs.com/joeyJss/p/10302360.html
Copyright © 2011-2022 走看看