循环语句
循环语句在程序设计中用来描述有规则重复的流程。在实际的程序中, 存在很多需要重复执行的流程,为了简化这些重复的执行流程,在程序设计语言 中新增了该类语句。
循环语句的三种语法格式:while 语句、do-while 语句 和 for 语句。
while 语句
while 关键字的中文意思是“当……的时候”,也就是当条件成立时循环执行对应的代码。while 语句是循环语句中基本的结构,语法格式比较简单。
while 语句语法格式:
while(循环条件){
循环体;
}
执行流程:在执行 while 语句时,首先判断循环条件,如果循环条件为 false,则直接执行 while 语句后续的代码,如果循环条件为 true,则执行循环体代码,然后再判断循环条件,一直到循环条件不成立为止。
do-while 语句
do-while 语句由关键字 do 和 while 组成,是循环语句中最典型的“先循环再判断”的流程控制结构,这个和其它 2 个循环语句都不相同。
do-while 语句的语法格式为:
do{
循环体
}while(循环条件)
执行流程:当执行到 do-while 语句时,首先执行循环体,然后再判断循环条件,如果循环条件不成立,则循环结束,如果循环条件成立,则继续执行循环体,循环体执行完成以后再判断循环条件,依次类推。
for 语句语法
for 关键字的意思是“当…的时候”,是实际开发中比较常用的循环语句。
for 语句的语法格式为:
for(初始化语句;循环条件;迭代语句){
循环体;
}
执行流程:
- 执行初始化语句
- 判断循环条件,如果循环条件为 false,则结束循环,否则执行下一步
- 执行循环体
- 执行迭代语句
- 跳转到步骤 2 重复执行
小结
while 语句和 for 语句在循环语句中属于“先判断再循环”的结构, 而 do-while 语句属于“先循环再判断”的结构,所以从语法角度来看,do-while 语句的循环体至少会执行一次,在实际使用时 while 语句和 for 语句之间可以进 行很方便的替换。
break 和 continue 语句
break和continue语句是和循环语句紧密相关的两种语句。其中break关键字的意思是中断、打断,continue 关键字的意思是继续。使用这两个关键字可以调节循环的执行。
break 语句
break 语句, 在循环语句中,break 语句的作用也是中断循环语句,也就是结束循环语句的执行。
break 语句可以用在三种循环语句的内部,功能完全相同。下面以 while 语句为例来说明 break 语句的基本使用及其功能。
int i = 0;
while (i < 10) {
i++;
if (i == 5) {
break;
}
}
该循环在变量 i 的值等于 5 时,满足条件,然后执行 break 语句, 结束整个循环,接着执行循环后续的代码。 在循环语句中,可以使用 break 语句中断正在执行的循环。
在实际的代码中,结构往往会因为逻辑比较复杂,而存在循环语句的 嵌套,如果 break 语句出现在循环嵌套的内部时,则只结束 break 语句所在的循 环,对于其它的循环没有影响,示例代码如下:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
System.out.println(j);
if (j == 3) {
break;
}
}
}
则该break语句因为出现在循环变量为j的循环内部,则执行到break 语句时,只中断循环变量为 j 的循环,而对循环变量为 i 的循环没有影响。
continue 语句
continue语句只能使用在循环语句内部,功能是跳过该次循环,继续执行下一次循环结构。
- 在while 和do-while 语句中continue 语句跳转到循环条件处开始继续执行
- 在 for语句中 continue 语句跳转到迭代语句处开始继续执行。
int i = 0;
while (i < 4) {
i++;
if (i == 2) {
continue;
}
System.out.println(i);
}
在变量i的值等于2时,执行continue语句,则后续未执行完成的循环体将被 跳过,而直接进入下一次循环。
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
System.out.println(j);
if (j == 3) {
continue ;
}
}
}
执行 continue 语句时,直接跳转到 i++ 语句。
小结
在实际的代码中,可以根据需要使用break和continue语句调整循环语句的执行。
- break:结束所在的循环,
- continue : 跳过当次循环未执行的代码,直接执行下一次循环。