Java流程控制:循环结构

Java知识点总结:想看的可以从这里进入

3.3 、循环结构

循环语句能够使程序代码在满足条件时重复执行,适用于需要重复一段代码直到满足特定条件为止的情况。

循环结构一般由四部分组成:

  • 初始化部分:在循环开始之前执行,用于初始化某些数据

  • 循环条件:boolean表达式,决定是否执行循环体,如过这个表达式永远为true,则会无限循环,这就是常说的死循环。

  • 循环体:循环的主体,用来不断循环的代码

  • 迭代:循环体每次循环后,通过迭代部分改变循环的条件,使循环在合适的时候结束,不至于处于死循环状态。

    在这里插入图片描述

    而一个循环体结束的方式有两种:循环条件返回false、通过关键字break。

3.3.1、while循环

while也叫条件判断语句,它通过一个条件来决定内部的语句是否重复执行。

先定义迭代的变量
while(布尔表达式进行判断){	//如果表达式的值为true,则执行循环,否则推迟循环。如果恒为true,则循环进入死循环
    循环体
    迭代条件  //为了不进入死循环的状态,循环内需要不断改变表达式的条件,从而让循环有失效的时候产生(一定不要忘记)
}

image-20210618172806604

while循环还有一种使用场景:在循环次数不确定的使用,可以将条件设定为true,在循环中进行条件的判断,然后利用关键字 break 跳出循环。

while(true){
    循环体
    if(判断条件){
        break;
    }
}

while循环的关键点:

  • 循环条件检查:在每次循环开始前都会检查条件。
  • 无限循环:如果条件永远为 true,则会创建一个无限循环。为了避免无限循环,需要确保循环体内有改变条件的代码,使其最终能够变为 false。
  • 循环控制变量:通常需要一个循环控制变量来控制循环的次数。
  • 循环体:至少应该有一条语句在循环体内,如果没有实际的语句执行,可以使用空语句(;)。
  • while 循环特别适用于不知道确切循环次数的情况,只知道循环需要在满足特定条件时继续执行。
3.3.2、do while

do while循环是while循环的一个变体,while循环是先判断条件,do循环是先执行一次循环体再判断条件。==所以do循环的循环体是至少被执行一次的。==do循环末尾是有分号的

先定义迭代的变量
do{		//先执行一次循环体,,再进行条件判断。所以do循环至少会执行一次
    循环体
    迭代条件	
}while(布尔表达式);

image-20210618195932369

  • 至少执行一次:do-while 循环保证循环体至少执行一次,即使条件第一次检查时就为 false
  • 循环条件的检查:循环条件是在循环体执行后进行检查的。
  • 循环控制变量:和 while 循环一样,通常需要一个循环控制变量来控制循环的次数。
  • 分号:在 do-while 循环中,while 语句的末尾需要一个分号(;)。
3.3.3、for循环

for循环属于最常用的循环,它能精确的控制循环的次数,是循环中最灵活、有效的一种结构。在java 5版本后还增加了foreach的语法,通常使用在数组、集合的遍历中。

1、for循环

for循环中有四个部分:第一部分通常是对计数器的初始化,该计数器可以确定循环次数。第二部分给出每次新一轮循环执行前要检测的循环条件。第三部分说明如何更改计数器。第四部分就是循环体

for(初始表达式 ; 布尔表达式 ; 操作表达式){	 //(int i = 0; i<10; i++),满足条件则执行循环
    循环体
}
//初始表达式:负责对变量进行初始化
//布尔表达式:负责循环是否执行
//操作表达式:负责修改变量,避免造成死程序
//三个表达式都可以为空语句(分号不能省略),三者均为空的时候,相当于一个无限死循环。
  1. for在执行时,先初始化表达式,该初始化表达式只在循环开始前执行一次。
  2. 初始化完成后,第一次循环会直接进行布尔表达式的判断,成立则执行循环体,不成立直接结束循环。
  3. 循环体每次循环结束后,会执行操作表达式改变条件,改变完成后,再通过布尔表达式判断是否循环,一直到表达式判断为false。

image-20210619131924401

for循环一样可以在无法确定循环次数时使用:

for(;;){
    if(条件){
        break;
    }
}

for循环和while循环是可以相互转换的,但是它们的初始化条件的作用域不同,for的初始化变量是定义在循环中的,只能在for的内部使用,而while的初始变量时在循环外部定义的,即便是跳出了while循环体,此变量在该方法中依然可以使用。当然如果把for循环的初始化变量定在for外,那么它和while就很类似了

如果使用浮点数作为循环的条件,那么该循环可以能会因为精度的关系导致成为死循环。

2、forEach循环

在Java5后,Java提供了一种更简单的循环 forEach,forEach是for语句的一种简化版本,但是不能取代for循环,任何的forEach语句都能转换成for语句。forEach主要用于数组或集合的遍历。因为forEach 无需知道数组或集合的长度,也无需索引来访问数据,它会自动遍历所有元素。

//常用于数组等集合性的数据,可以直接遍历集合内的元素,缺点是无法知道数据的索引下标
for(类型 变量名 : 集合的变量名){
    //循环体
}

在这里插入图片描述

需要注意的是在forEach循环中,不要对循环的变量从新赋值,forEach 在循环中会为数组或集合中的元素生成一个临时变量,然后将数组集合内元素赋值给临时变量,所以如果操作临时变量不但不会改变数组和集合中的元素值,还会导致不能正确遍历元素。
在这里插入图片描述

3.3.4、循环嵌套

循环嵌套就是在一个循环A的循环体中再声明一个循环B。它的执行顺序是:外层的循环体迭代一次,内层的循环会完整的遍历执行一遍,外层迭代几次,内层循环就完整的遍历几次。

for(int i=0; i<5; i++){				//外层循环5此
    for(int j=0; j<5; j++){			//内层循环5*5次
        
    }
}
3.3.5、循环的关键字

在循环中常用的关键字为:continue 、break。主要用于对循环语句的控制。

1、continue

continue 适用于任何循环控制结构中。作用是终止正在循环中的这次循环,回到循环中改变变量的表达式,然后进入到下一次循环。

在这里插入图片描述

当循环语言嵌套时,跳出的循环包裹 continue 最近的一个循环体。

在这里插入图片描述

如果想让 continue 跳出外层循环,需要给外循环添加一个标签才行,标签格式 标识符:,然后用 continue 标签; 结束外层循环。这个标签必须在 continue 所在循环的外层循环之前定义。

在这里插入图片描述

2、break

break 主要用在循环语句或者 switch 语句中,程序遇到break时,就会直接跳出整个语句块、结束switch语句、或者终止整个循环

在这里插入图片描述

当循环语言嵌套时,跳出的循环包裹 break 最近的一个循环体。

在这里插入图片描述

如果想让break跳出最外层的循环,需要给外循环添加一个标签才行,标签格式 标识符:,然后用 break 标签; 结束外层循环。这个标签必须在break所在循环的外层循环之前定义。

在这里插入图片描述

3、return

在循环中常用的关键字就是break和 continue 两个,但是还有一个return关键字,它并不是用来结束循环的,而是直接结束整个方法。

因为一般我们都是在方法中写代码,所以如果循环中有return关键字,一样可以将循环结束,不仅如此,循环后的代码也不会执行了,因为整个方法都直接终止运行了。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰 羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值