Skip to content

循环语句

在写代码的过程中,通常会有很多需要重复做的事情,这种事情我们需要使用循环语句来解决,对于初学者来说,循环结构是一个砍,可能需要几天才能理解清楚,唯一的办法就是多练习

for 循环

先来看一个需求,打印出 1-5 这几个数字

java
public static void main(String[] args) {
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
    System.out.println(4);
    System.out.println(5);
}

上面输出数字的代码我们重复写了 5 次,现在只要求输出 5 个数字,如果输出 10000 万次呢?如果还是这样输出,那会非常的麻烦,这就需要使用循环语句来解决

请看下面的代码

java
public static void main(String[] args) {
    for (int i = 1; i <= 5; i++) {
        System.out.println(i);
    }
}

我们使用了 for 循环语句来循环输出 5 个数字,这个时候,如果我们的需求改变,需要输出 100 次,我们只需要修改一下代码即可

java
public static void main(String[] args) {
    for (int i = 1; i <= 100; i++) {
        System.out.println(i);
    }
}

以上就是使用循环语句的作用,接下来,我们详细拆解一下 for 循环语句

// 语句的结构如下
for (初始化表达式; 条件表达式; 迭代语句) {
    循环体
}

循环语句需要包括几个要素

1.初始变量,这个变量用来控制条件是否成立
2.判断条件,根据这个条件来决定是否执行循环体
3.迭代,改变变量的值,再代入条件进行判断,以决定是否进行下次循环
4.循环体,需要被循环执行的代码片段

以下面的代码为例:

java
for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

详细的执行步骤:

第一次循环

第1步,初始化条件变量  int i = 1; 这个初始化只执行1次
第2步,变量i的值代入条件,即 1 <= 5, 结果为true
第3步,因为第2步结果为true,要执行一次循环体,即System.out.println(1); 输出1
第4步,执行迭代语句 i++; 执行过后i的值为2

第二次循环
上次循环后,i的值为2
第1步,把i=2代入条件判断,即 2 <= 5;结果为true
第2步,条件语句结果为true,需要执行循环体,即System.out.println(2);输出2
第3步,执行迭代语句 i++; 执行过后i的值为3

第三次循环
上次循环后,i的值为3
第1步,把i=3代入条件判断,即 3 <= 5;结果为true
第2步,条件语句结果为true,需要执行循环体,即System.out.println(3);输出3
第3步,执行迭代语句 i++; 执行过后i的值为4

第四次循环
上次循环后,i的值为4
第1步,把i=4代入条件判断,即 4 <= 5;结果为true
第2步,条件语句结果为true,需要执行循环体,即System.out.println(4);输出4
第3步,执行迭代语句 i++; 执行过后i的值为5

第五次循环
上次循环后,i的值为5
第1步,把i=5代入条件判断,即 5 <= 5;结果为true
第2步,条件语句结果为true,需要执行循环体,即System.out.println(5);输出5
第3步,执行迭代语句 i++; 执行过后i的值为6

第六次循环
上次循环后,i的值为6
第1步,把i=6代入条件判断,即 6 <= 5;结果为false
第2步,条件语句结果为false,结束循环

从上面的详细步骤,我们得出以下结论,需要注意:

TIP

循环需要有结束条件,如果没有结束条件,那么代码将永久循环下去,造成死循环,让计算机卡死

理解循环的小技巧,像我上面一样,把循环的详细执行步骤,手写 3-5 遍

break 和 continue 关键字

break 表示在循环中,可以跳出当前的循环

举个例子:

java
for (int i = 1; i <= 5; i++) {
    if (i == 2) {
        // 执行这条语句会跳出当前循环
        break;
    }
    System.out.println(i);
}

上面代码中,循环输出 5 个数字,但是循环体中做了一个判断,如果 i==2 的时候,就跳出循环,因此,最终只会输出 1

continue,表示继续,跳出当前循环,继续下一次循环,这意味着,如果 continue 语句后面还有内容,是不会被执行的

举个例子:

java
for (int i = 1; i <= 5; i++) {
    if (i == 2) {
        // 执行这条语句后,就直接跳过,进行下次循环
        continue;
    }
    // 后面这条不会被执行
    System.out.println(i);
}

上面代码中,当 i==2 的时候,执行了一条 continue 语句,继续下次循环,本次循环中,continue 后面的 System.out.println(i);这条语句没有被执行到,因此,不会输出,最终输出到结果是:1345

循环嵌套

在循环内部,可以嵌套循环

举个例子:

java
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.println("i=" + i + ", j=" + j);
    }
}

输出结果

i=1, j=1
i=2, j=1
i=2, j=2
i=3, j=1
i=3, j=2
i=3, j=3

学习循环,一定要搞清楚到底执行了多少步,前期不太熟的时候,练习的方法是把步骤手写出来

例如:上面的代码中,循环的执行步骤如下

外层循环

当i=1的时候,满足条件,执行循环体
    for (int j = 1; j <= 1; j++) {
        System.out.println("i=" + 1 + ", j=" + j);
    }
    上面是内层循环,内层循环的步骤如下:
        当j=1的时候,满足条件,执行一次打印,输出 i=1, j=1
        当j=2的时候,不满足条件,结束循环
        内层循环结束,跳出内层循环,执行外层循环
当i=2的时候,满足条件,执行循环体
    for (int j = 1; j <= 2; j++) {
        System.out.println("i=" + 1 + ", j=" + j);
    }
    上面是内层循环,内层循环的步骤如下:
        当j=1的时候,满足条件,执行一次打印,输出 i=2, j=1
        当j=2的时候,满足条件,执行一次打印,输出 i=2,j=2
        当j=3的时候,不满足条件,结束循环
        内层循环结束,跳出内层循环,执行外层循环
当i=3的时候,满足条件,执行循环体
    for (int j = 1; j <= 3; j++) {
        System.out.println("i=" + 3 + ", j=" + j);
    }
    这里的步骤,留给大家自己补充上去...

当i=4的时候,不满足条件,结束循环