Appearance
循环语句
在写代码的过程中,通常会有很多需要重复做的事情,这种事情我们需要使用循环语句来解决,对于初学者来说,循环结构是一个砍,可能需要几天才能理解清楚,唯一的办法就是多练习
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的时候,不满足条件,结束循环