循环语句#
循环语句能重复执行相同的语句。
while语句#
while语句用于满足条件时重复执行语句,并在不满足条件时自动退出循环。
while (条件) {
语句;
...
}
以上代码,可以用流程图来表示:
flowchart LR
start([开始])
condition{条件}
statement[语句]
End([结束])
start-->condition
condition--true-->statement-->start
condition--false-->End
do ... while语句#
do ... while语句和while类似,只是do ... while语句先执行语句、后判断条件。
void main() {
int i = 2;
do {
i++;
} while (i < 2);
println(i); // 3
int j = 2;
while (j < 2) {
j++;
}
println(j); // 2
}
用流程图表示:
flowchart LR
start([开始])
condition{条件}
statement[语句]
End([结束])
start-->statement
statement-->condition
condition--true-->start
condition--false-->End
for语句#
当while语句满足以下形式
T v = i;
while (c) {
s;
u;
}
时,我们可以用for语句来表示:
for (T v = i; c; u) {
s;
}
也就是说,for语句允许我们创建1个或几个临时变量作为计数器,并在满足条件c时执行语句s,最后执行更新语句u。其中,创建的临时变量只能在for语句的循环体内使用。
for语句圆括号内的三个语句都可能不存在。
一般地,条件c和更新语句u用于对临时变量操作,例如典型的重复执行n次的循环:
for (int i = 0; i < n; i++) {
语句;
...
}
死循环#
当循环语句的条件始终为true时,该循环就是死循环。
对于for语句,若条件c被省略,则相当于其条件始终为true。
while (true) { }
for (;;) { }
死循环在处理不当的情况下会大量占用系统资源,因此循环语句应当在合适的情况下退出。下面我们来看退出、跳过循环的语句。
退出、跳过循环#
break语句负责退出循环。continue语句负责跳过本次循环。
这两个语句都只能对离其最近的循环起作用。若要对外面的循环起作用,则需要使用标签来标记循环语句。
标签#
标签(Label)可用于标记循环语句。
void main() {
标签名:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
println(i * 10 + j);
if (j == 5) {
continue 标签名;
}
if (i == 5) {
break 标签名;
}
}
}
}
问题:以下代码能否编译?
void main() {
https://squid233.github.io/java-tutorial/basic/control_flow/loop/
for (int i = 0; i < 10; i++) {
println(i);
}
}
答案
能。上面的代码刻意隐藏了高亮,实际上如果我们把代码高亮显示出来:
void main() {
https://squid233.github.io/java-tutorial/basic/control_flow/loop/
for (int i = 0; i < 10; i++) {
println(i);
}
}
//后面的内容是注释。
总结#
一张图总结:
flowchart LR
start([开始])
condition{条件}
statement1[语句1]
statement2[语句2]
End([结束])
start-->condition
condition--false-->End
statement1--break-->End
statement1--continue-->start
condition--true-->statement1-->statement2-->start
statement2--break-->End