while、for和do...while循环的认识和区别

while、for和do…while循环的认识和区别



三种循环的认识

while循环

语法结构:
while (布尔表达式) {
循环体;
}

在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。

while循环结构流程图如图所示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228174207749.png) 注意: **循环条件:i <= 100 循环体:{sum += i; i++;} 循环变量:i 循环体中要有改变循环变量值的操作,否则会导致死循环** ### do-while循环 语法结构: do { 循环体; } while(布尔表达式) ; do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。do-while循环的循环体至少执行一次。
do-while循环结构流程图如图所示。

在这里插入图片描述
注意:while循环和do-while循环区别
while循环先判断再循环,可能循环体一次也没有执行
do-while循环先执行再判断,循环体至少执行一次
如果while循环第一次判断为真,两种循环无差别;两种循环效率上没有差别
注意2:do-while循环的适用场合:
do{
考试;
判卷;
}while(不及格);

如果使用while循环实现:
考试;
判卷;
while(不及格){
考试;
判卷;
}

for循环

语法结构:
for (初始表达式; 布尔表达式; 迭代因子) {
循环体;
}

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。
初始化部分设置循环变量的初值
条件判断部分为任意布尔表达式
迭代因子控制循环变量的增减
for循环在执行条件判定后,先执行的循环体部分,再执行步进。

for循环结构的流程图如图所示。

在这里插入图片描述
注意1:
一定要明白for循环的语法结构
for( 循环变量初始化; 循环条件 ; 改变循环变量的值){
循环体
}
注意2:
三种循环结构到底使用哪一个
循环次数固定,建议使用for
循环次数不固定
先执行再判断,建议使用do-while
先判断再执行,使用while
实际开发,for使用频率高,然后是while,最后是do-while
注意3:
循环内部定义变量
可以在for循环的表达式1中定义变量,变量的作用范围仅限于该for循环,可以减少变量在内存中存在的时间
注意4:
for是三种循环中最灵活的
表达式1,表达式2,表达式3可以省略部分或者全部,但是;不可少,如果省略,也需要写到其他位置,这是结构的变化,语句没有减少。

OK!区别在这里,已经不用回顾的同学请看这里~~~~~~~~~~~~

一:

如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
 for (int i = 1; i < 0; i++) {
                System.out.println("Hello");
            }
            System.out.println("================");
            
            int i = 1;
            do {
                System.out.println("World");
                i++;
            } while (i < 0);

在这里插入图片描述
这种情况for循环和while循环均不会被执行,但是do…while被执行了一次。

二:

for循环的变量在小括号当中定义,只有循环内部才可以使用。
while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。
for (int i = 1; i < 0; i++) {
                System.out.println("Hello");
            }
            System.out.println(i);
            //这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。
            System.out.println("================");

此处i为在for循环内的局部变量,在循环外不能使用。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值