我来理解for循环

简单示例

先看一段简单的代码:java

int sum = 0;
int n = 5;

for (int i = 1; i <= n; i++) {
    sum += i;
}

System.out.println(sum);

这段代码的含义是什么?求和:sum = 1 + 2 + 3 +  .. + n,当前n为5。spa

这段代码是怎么执行呢?code

  1. 声明sum,,并赋值0。(int sum = 0)
  2. 声明n,赋值为5。(int n = 5; )
  3. 执行for循环:int i = 1;
  4. 执行for循环:判断i <= n,若是为true(真),则执行5;若是为false(假),则执行8
  5. 执行for循环:sum += i
  6. 执行for循环:i++
  7. 执行for循环:跳转4
  8. 输出sum

从程序的执行步骤中,咱们能够看出for循环执行的步骤为3-7步,组成结构:
for ( 1; 2; 4) {
    3
}
其中:
1为声明变量阶段,在for循环中执行一次;
2为逻辑判断,控制for循环是否继续;
3为循环体,须要循环执行的语句;
4为循环以后的操做。在6执行完i++后,须要从新在4判断当前i是否还小于等于n,若是不成立则再也不执行5,反之则继续重复循环。for循环

引入continue标识

当理解完毕这段程序后,咱们对场景稍做调整:
求和:sum = 1 + 2 + 3 +  .. + n,若是遇到3的倍数,则跳过不计算。class

调整后代码以下:变量

int sum = 0;
int n = 5;

for (int i = 1; i <= n; i++) {
    if (i % 3 == 0) continue;
    sum += i;
}

System.out.println(sum);

经过对比,发现多了语句【if (i % 3 == 0) continue;】,这句话是什么含义?进阶

若是i取余3为0,则跳过当前循环体(sum += i),继续执行i++。循环

如此以来,执行步骤变动为:语法

  1. 声明sum,,并赋值0。(int sum = 0)
  2. 声明n,赋值为5。(int n = 5; )
  3. 执行for循环:int i = 1;
  4. 执行for循环:判断i <= n,若是为true(真),则执行5;若是为false(假),则执行8
  5. 执行for循环:i % 3 == 0,若是i为3的倍数,则执行7;反之,则执行6
  6. 执行for循环:sum += i
  7. 执行for循环:i++
  8. 执行for循环:跳转4
  9. 输出sum

【引入知识】
i / 3 表示:i除以3;i % 3 表示i除以3的余数,称做取模。程序

引入break标识

那若是场景变化以下,又该如何处理呢?

求和:sum = 1 + 2 + 3 +  .. + n,若是数字大于4,则跳过不计算。

int sum = 0;
int n = 5;

for (int i = 1; i <= n; i++) {
    if (i > 4) continue;
    sum += i;
}

System.out.println(sum);

当咱们发现i从5开始大于4,接下来的i每次叠加后都会大于4。即当i大于4后,sum+=i;就永远不会被执行到了。

这个时候,咱们就能够使用break,它的意思,正如咱们但愿的:跳出当前for循环,再也不执行for循环体的内容。

int sum = 0;
int n = 5;

for (int i = 1; i <= n; i++) {
    if (i > 4) break;
    sum += i;
}

System.out.println(sum);

如此以来,执行步骤变动为:

  1. 声明sum,,并赋值0。(int sum = 0)
  2. 声明n,赋值为5。(int n = 5; )
  3. 执行for循环:int i = 1;
  4. 执行for循环:判断i <= n,若是为true(真),则执行5;若是为false(假),则执行8
  5. 执行for循环:i > 4,若是为真,则执行9;反之,则执行6
  6. 执行for循环:sum += i
  7. 执行for循环:i++
  8. 执行for循环:跳转4
  9. 输出sum

以上,咱们就理解了for循环,以及continue、break语法。

进阶版

1. 使用嵌套for循环,输出以下图形:

*
**
***

代码以下:

for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
        System.out.print("*");
    }
    System.out.println();
}

2. 当咱们在使用break语法的时候,其实代码也能够这样写。

PS:因为咱们想解释break的做用,因此并无考虑在实际中的应用。

int sum = 0;
int n = 5;

for (int i = 1; i <= n && i <= 4; i++) {
    sum += i;
}

System.out.println(sum);
相关文章
相关标签/搜索