for循环语句执行顺序

  • for循环在编程中经常遇到,这里我们探究一下其中语句的执行顺序,以更加准确的确定

代码演示

  1. 结构说明
    for (a初始条件; b循环判断条件; c循环过程表达式) {
       d循环体
    }
    
    a.初始条件:对刚开始执行循环体做初始化;
    b.循环判断条件:判断是否满足循环执行的条件;
    c.循环过程表达式:每次执行循环体后,额外执行的语句,一般为i++, i--
    d.循环体:循环执行过程中的执行语句
    以下,我们都以 a b c d 来代替指定的表达式;
  2. 演示一:条件不满足时的执行情况
        int i = 0;
        System.out.println("for start==="+i);
        for (i = 1; i < 1; System.out.println("other: "+i)) {
            System.out.println("inner circle: "+i);
            i++;
        }
        System.out.println("inner end===="+i);
    
    上结果:
    for start===0
    inner end====1
    
    所以当条件不满足时:
    执行顺序是:a->b
    Created with Raphaël 2.2.0 开始 a.初始化 b.判断条件 结束
  3. 演示二:条件满足但仅仅执行一次的情况
      int i = 0;
      System.out.println("for start==="+i);
      for (i = 1; i == 1; System.out.println("other: "+i)) {
          System.out.println("inner circle: "+i);
          i++;
      }
      System.out.println("inner end===="+i);
    
    上结果:
    for start===0
    inner circle: 1
    other: 2
    inner end====2
    
    所以当条件仅仅满足执行一次时:
    执行顺序是:a->b->d->c->b
    Created with Raphaël 2.2.0 开始 a.初始化 b.判断条件:满足 d.循环体 c.循环过程表达式 b.判断条件:不满足 结束
  4. 终极演示:完整打印每一步运行
    public static void main(String[] arg0){
       int i = 0;
       System.out.println("start====");
       for (System.out.println("a初始条件"); doChoice(i); System.out.println("c循环过程表达式")) {
           System.out.println("d循环体");
           i++;
       }
       System.out.println("end====");
    }
    
    private static boolean doChoice(int i) {
       System.out.println("b循环判断条件");
       if(i > 3){
           return false;
       }
       return true;
    }
    
    上结果:
     start====
     a初始条件
     b循环判断条件
     d循环体
     c循环过程表达式
     b循环判断条件
     d循环体
     c循环过程表达式
     b循环判断条件
     d循环体
     c循环过程表达式
     b循环判断条件
     d循环体
     c循环过程表达式
     b循环判断条件
     end====
    
    所以当条件满足多次执行时:
    执行顺序是:a->b->d->c->(b->d->c)…->b
    结合前面的分析,我们得出下面的流程图:
    Created with Raphaël 2.2.0 开始 a.初始化 b.判断条件 d.循环体 c.循环过程表达式 结束 yes no

    结论

    • 初始化条件,无论如何都会执行一次;
    • 判断条件,每次循环体执行前均会检查一次,如果满足则进入循环体,不满足则结束循环;
    • 其他处理逻辑c,在每次循环体执行结束,均会执行一次,可以认为是循环体的最末的执行语句;
    • 开发人员需要注意 *a.初始化、c.循环过程表达式 的执行时机,以免莫名其妙的问题出现
    • 一般c.循环过程表达式,为i++, i--等递增递减语句;
    • 如果b.判断条件留空,无内容,则默认为true,默认一定会进入循环体,除非循环体内部break
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值