概述
while、do-while 和 for 循环的区别
- 一、for 循环执行顺序
- 二、while 循环执行顺序
- 三、do-while 循环执行顺序
- 四、三者区别
- 1、for 循环
- 2、while 循环
- 2.1 “循环迭代<3>”放在 continue 之后
- 2.2 “循环迭代<3>”放在 continue 之前
- 3、do-while 循环
- 3.1 “循环迭代<3>”放在 continue 之后
- 3.2 “循环迭代<3>”放在 continue 之前
- 3.3 do-while 至少执行一次
不管是 for 、while 还是 do-while,循环一般都包括三个部分:
1、循环初始条件<1>
2、循环判断条件<2>
3、循环迭代<3>
一、for 循环执行顺序
可以参考这个老哥写的博客:For循环执行顺序流程
for (初始条件<1>; 判断条件<2>; 循环迭代<3>) {
循环代码块;
}
- 首先,执行“初始条件<1>”
- 然后,判断 “初始条件<1>”是否满足 “判断条件<2>”。若满足条件,则进入循环体进行循环;否则,不进入循环体,直接退出
- 执行完一次循环体之后(就是到 执行到 右半拉 “}” 之前), 将进行一次“循环迭代<3>”(比如,i++、i–等)。然后再回到第2步,但此时不会再执行判断 “初始条件<1>”(仅第一次执行)。
Note:如果 for 循环里面有 continue 的话,下一步是去执行上述第3步。即,for循环 continue后会进行一次 “循环迭代<3>”。这也是 for 和 while的区别。
二、while 循环执行顺序
初始化<1>
while (判断条件<2>) {
循环代码块;
循环迭代<3>
}
- 首先,执行“初始条件<1>”;
- 然后,判断 “初始条件<1>”是否满足 “判断条件<2>”。若满足条件,则进入循环体进行循环;否则,不进入循环体,直接退出;
- 整个循环体里面的所有内容(包括 “循环代码块” + “循环迭代<3>” )都执行完毕后,再次回到第 2 步。
Note:第 1 步和第 2 步,while 和 for 其实是一样的,仅第三步有点差异
三、do-while 循环执行顺序
初始化<1>
do {
循环代码块;
循环迭代<3>
} while (判断条件<2>);
- 首先,执行“初始条件<1>”;
- 然后,直接进入循环体(执行“循环代码块” + “循环迭代<3>”);
- 然后,判断经过“循环迭代<3>”后的 i 是否满足 “判断条件<2>”。若满足条件,则再次进入循环体进行循环;否则,不进入循环体,退出循环。
Note:do-while 语句至少会把循环体执行一次; 而 while 语句的循环体可能一次都不会被执行。
四、三者区别
- 顺序执行时(无跳转时,比如 continue),for 和 while没啥区别。但是一旦循环体中出现 continue ,二者 可能 就会出现差异。
只是可能哈 2.2和 3.2其实和 for 也差不多,只是 2.1 和 3.1 和 for 有差异。
- do-while 和 while、for 循环的区别是:do-while至少会执行一次循环体(尽管初始条件不满足 “循环判断条件”),但是 while 和 for 可能一次都不执行。
1、for 循环
上面“for 循环执行顺序第 3 步”说过,for 循环每执行完一次循环体之后都会进行一次“循环迭代<3>”。执行 continue 语句之后,便是相当于 本轮 循环体执行完了(相当于直接跳到右半拉 “}”之前),本轮 continue 之后的语句不会再执行,下一步执行一次“循环迭代<3>”。
for (int i = 0; i < 10; i++) {
if (i == 5) { // 不会死循环
continue;
}
System.out.println("i = " + i);
}
输出结果如下所示:
2、while 循环
2.1 “循环迭代<3>”放在 continue 之后
continue 相当于提前结束 本轮 循环(相当于直接跳到右半拉 “}”之前),这里面就会跳过了 “循环迭代<3>”,所以这里会造成死循环。
int j = 0;
while (j < 10) {
System.out.println("j = " + j);
if (j == 5) { // 会死循环
continue;
}
j++; // 在 continue 之后
}
输出如下所示:
2.2 “循环迭代<3>”放在 continue 之前
若把“循环迭代<3>”放到 continue 之前,不会造成死循环。此时,功能类似于 for 循环,只是“循环迭代<3>”和执行顺序和 for 不一样而已。
int k = 0;
while (k < 10) {
k++; // 在 continue 之前
if (k == 5) {
continue;
}
System.out.println("k = " + k);
}
输出结果如下所示:
3、do-while 循环
3.1 “循环迭代<3>”放在 continue 之后
同2.1 “循环迭代<3>”放在 continue 之后
int l = 0;
do {
System.out.println("l = " + l);
if (l == 5) { //此时会死循环
continue;
}
l++; // 在 continue 之后
} while (l < 10);
输出结果如下:
3.2 “循环迭代<3>”放在 continue 之前
同2.2 “循环迭代<3>”放在 continue 之前
int l = 0;
do {
l++; // 在 continue 之前
if (l == 5) {
continue;
}
System.out.println("l = " + l);
} while (l < 10);
3.3 do-while 至少执行一次
do-while 先执行一次循环体后,在判断“循环判断条件<2>”
这里 初始条件 m =123,显然不满足 “循环判断条件<2>” m < 0。但是,do-while仍然会执行一次。
int m = 123;
do {
System.out.println("m = " + m);
} while (m < 0);
输出结果如下:
最后
以上就是迷人小松鼠为你收集整理的while、do-while 和 for 循环的区别一、for 循环执行顺序二、while 循环执行顺序三、do-while 循环执行顺序四、三者区别的全部内容,希望文章能够帮你解决while、do-while 和 for 循环的区别一、for 循环执行顺序二、while 循环执行顺序三、do-while 循环执行顺序四、三者区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复