循环语句
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要通过修改循环变量使得循环判断条件为false,从而结束循环,否则循环将一直执行下去,形成死循环。
for循环
for(初始化语句①; 循环条件语句②; 迭代语句④){
循环体语句③
}
notice:
(1)for(;;)中的两个;是不能多也不能少
(2)循环条件必须是boolean类型
for循环执行流程:
-
第一步:执行初始化语句①,完成循环变量的初始化;
-
第二步:执行循环条件语句②,看循环条件语句的值是true,还是false;
-
如果是true,执行第三步;
-
如果是false,循环语句中止,循环不再执行。
-
-
第三步:执行循环体语句③
-
第四步:执行迭代语句④,针对循环变量重新赋值
-
第五步:根据循环变量的新值,重新从第二步开始再执行一遍
实例:
int i;
for(i=1;i<=5;i++){
System.out.println(i);
}
死循环
for(;;){
循环体语句块;//如果循环体中没有跳出循环体的语句,那么就是死循环
}
使用continue结束本次循环,执行下一次循环
遇到无法确定的循环次数的循环时,在条件满足时跳出循环
int i;
for(i=1;i<=100;i++){
if(i%7==0||i%10==7||i/10==7){
System.out.println("过");
continue;
//continue结束当前循环,开始下一次循环,break结束整个循环
}
System.out.println(i);
}
while循环
while循环语句基本格式:
while (循环条件语句①) {
循环体语句②;
}
执行流程:
-
第一步:执行循环条件语句①,看循环条件语句的值是true,还是false;
-
如果是true,执行第二步;
-
如果是false,循环语句中止,循环不再执行。
-
-
第二步:执行循环体语句②;
-
第三步:循环体语句执行完后,重新从第一步开始再执行一遍
实例
int i=1;
while(i<=10){
System.out.println(i);
i++;
}
死循环
while(true){
循环体语句;//如果此时循环体中没有跳出循环的语句,就是死循环
}
notice:
(1)while(true):常量true表示循环条件永远成立
(2)while(循环条件),如果循环条件中的循环变量值不修改,那么循环条件就会永远成立
(3)while()中的循环条件不能空着
do....while循环
do...while循环语句标准格式:
do {
循环体语句①;
} while (循环条件语句②);
notice:
(1)while(循环条件)中循环条件必须是boolean类型
(2)do{}while();最后有一个分号
(3)do...while结构的循环体语句是至少会执行一次,这个和for和while是不一样的
执行流程:
-
第一步:执行循环体语句①;
-
第二步:执行循环条件语句②,看循环条件语句的值是true,还是false;
-
如果是true,执行第三步;
-
如果是false,循环语句终止,循环不再执行。
-
-
第三步:循环条件语句执行完后,重新从第一步开始再执行一遍
do...while循环至少执行一次循环体
实例:
int i=1;
do{
System.out.println(i);
i++;
}while(i<=10);
死循环
do{
循环体语句;//如果此时循环体中没有跳出循环的语句,就是死循环
}while(true);
notice:
(1)while(true):常量true表示循环条件永远成立
(2)while(循环条件),如果循环条件中的循环变量值不修改,那么循环条件就会永远成立
(3)while()中的循环条件不能空着
三者区别:
-
从循环次数角度分析
-
do...while循环至少执行一次循环体语句
-
for和while循环先循环条件语句是否成立,然后决定是否执行循环体,至少执行零次循环体语句
-
-
如何选择
-
遍历有明显的循环次数(范围)的需求,选择for循环
-
遍历没有明显的循环次数(范围)的需求,循环while循环
-
如果循环体语句块至少执行一次,可以考虑使用do...while循环
-
本质上:三种循环之间完全可以互相转换,都能实现循环的功能
-
-
三种循环结构都具有四要素:
-
(1)循环变量的初始化表达式
-
(2)循环条件
-
(3)循环变量的修改的迭代表达式
-
(4)循环体语句块
-
嵌套循环:
两个循环格式:
for(初始化语句①; 循环条件语句②; 迭代语句⑦) {
for(初始化语句③; 循环条件语句④; 迭代语句⑥) {
循环体语句⑤;
}
}
实例:打印直角三角形:
public static void main(String[] args){
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}