循环语句
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,取决于循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。
Java中有三种主要的循环结构:
- while 循环
- do…while 循环
- for 循环
循环语句的四个组成部分
初始化部分(init_statement)
循环条件部分(test_exp)
循环体部分(body_statement)
迭代部分(alter_statement)
1 while 循环
while 循环语法
while是最基本的循环,它的结构为:
while(条件表达式) {
// 循环内容
}
- while语句执行流程:
- 1)根据条件表达式的结果判断是true还是false;
- 2)如果是true则执行循环体语句;
- 3)如果是false则不执行循环体语句;
- 4)循环体语句珍惜完毕后重新根据条件表达式判断是否再次执行循环体语句;
执行流程
当 while 循环主体有且只有一个语句时,可以将大括号除去。在 while 循环语句中,只有一个判断条件,它可以是任何表达式,当判断条件的值为真,循环就会执行一次,再重复测试判断条件、执行循环主体,直到判断条件的值为假,才会跳离 while 循环。
下面列出了 while 循环执行的流程。
- 第一次进入 while 循环前,就必须先为循环控制变量(或表达式)赋起始值。
- 根据判断条件的内容决定是否要继续执行循环,如果条件判断值为真(True),继续执行循环主体;条件判断值为假( False ),则跳出循环执行其他语句。
- 执行完循环主体内的语句后,重新为循环控制变量(或表达式)赋值(增加或减少),由于 wh ile 循环不会自动更改循环控制变量(或表达式)的内容,所以在 while 循环中为循环控制变量赋值的工作要由设计者自己来做,完成后再回到步骤 2 重新判断是否继续执行循环。
while 语句练习
public class Demo01 {
public static void main(String[] args) {
while (true){
System.out.println("执行了循环体");
}
}
}
在上述代码中,由于条件表达式是一个定值,要么一直true,要么一直为false,为true则一直执行循环体,造成死循环;为false则不会执行一次循环体的代码;
那么使用 while 循环实现输出 1~5 应该怎么做呢?
我们尝试改进一下条件表达式中的条件:
public class Demo02 {
public static void main(String[] args) {
int i = 1;
while (i <= 5) {
System.out.println("执行了" + i + "次");
/*
执行完毕一次循环体i自增1
i的变化: 1,2,3,4,5
*/
i++;
}
}
}
循环练习作业:
1 获取1~100 所有整数的累加和。
2 获取1~100 所有偶数的累加和。
2 do…while 循环
do…while 循环也是用于未知循环执行次数的时候,而 while 循环及 do…while 循环最大不同就是进入 while 循环前,while语句会先测试判断条件的真假,再决定是否执行循环主体,而 do… while 循环则是“先做再说”,每次都是先执行一次循环主体,然后再测试判断条件的真假,所以无论循环成立的条件是什么,使用 do…while 循环时,至少都会执行一次循环主体。
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
语法:
do {
// 代码语句
}while(条件表达式);
- while语句执行流程:
- 1)首先执行一次循环体语句;
- 2)执行循环体语句之后进行条件判断;
- 3)如果是true则继续执行循环体语句,如果是false则结束do…while循环;
- 与while循环不同的是,do…while循环即使条件表达式不成立也会执行一次循环体语句:
public class Demo01 {
public static void main(String[] args) {
do {
System.out.println("do...while执行...");
} while (false);
}
}
do…while语句练习
- 使用
do...while
循环实现输出 1~5:
public class Demo01 {
public static void main(String[] args) {
int i = 0;
do {
System.out.println("执行了" + (i + 1) + "次");
/**
* i的变化值: 0,1,2,3,4
*/
i++;
} while (i < 5);
}
}