循环结构

循环结构

本章内容的百度脑图如下:

什么是循环

        循环是指事物周而复始地运动或变化。计算机程序中的循环结构就是前要多次重复执行地统一结构。在 Java中循环语可可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码称为循环体。当反复执行这个循环体时,需要在合适的时发视循环条件改为假(false),从而结束循环,否则,循环将一直执行下去,形成死循环。
        循环的要素有循环条件和循环体。
        循环条件:是一个boolean表达式。该表达式能决定是否执行循环体。在某些情况下,循环条件以循环次数的方式体现。
        循环体:是循环的主体,如果循环条件允许,这个代码块将被重复执行。如果这个代码块只有一行语句,则这个代码块的花括号是可以省略的。
       Java 语言提供了 3 种基本循环结构来完成循环的控制,它们分别是for、while和do-while。用户可以根据实际情况选择合适的循环结构来控制代码。一般来讲,对于循环次数已知的循环,使用for 循环来控制比较方便,而 while 循环用来控制循环次数未知的循环:do-while用来完成至少需要一次的循环。其实,这3种循环结构是可以通用的,需要在编程时灵活掌握。接下来,将详细介绍这3种循环结构。

while循环

 while语法的格式:

 

        while循环在每次执行循环体之前,先判断循环条件是否成立。如果循环条件成立,即为true,则执行循环体部分。执行完循环体之后,再一次判断循环条件是否成立。直到循环条件不成立,即为false时,循环体中的语句块不会被执行,执行循环后面的语句。 吗                                                                    
while循环的流程图:

 

        使用while循环时,一定要保证循环条件有变为false的情况;否则,这个循环将成为一个死循环,永远无法结束这个循环。

        除此之外,对于许多初学者而言,使用while 循环时还有一个问题:while循环的循环条件后紧跟一个分号,例如以下代码:

         一般初学者很难注意这个问题,但仔细看一下这个程序,不难发现while循环条件表达式后紧跟了一个分号。在Java 程序中,一个单独的分号表示一个空语句,而不做任何操作的空语句,意味着这个while循环的循环体是空语句。空语句作为循环体也不是最大的问题,问题是当Java反复执行这个循环体时,循环条件的返回值没有任何改变,这就成了一个死循环。分号后面的代码块则与while循环没有任何关系。

do-while循环

do-while循环的语法格式:

         与while循环不同的是,do-while循环条件后必须有一个分号,这个分号表明循环结束。

         在do-while循环中,即使循环条件的值开始是假。他也会执行循环体。因此,do-while循环的循环体至少执行一次。

do-while循环的流程图:

while循环与do-while循环的对比:

do-while循环与while循环的区别在于:while循环是先判断循环条件,如果条件为真,则执行循环体;而 do-while循环则先执行循环体,然后才判断循环条件,如果循环条件为真,则执行下一次循环,否则中止循环。


对比while 和do-while这两种循环,其有如下异同之处。


相同处:都是循环结构,使用“while(循环条件)”表示循环条件,使用大括号将循环体操作括起来。
不同处:
(1)语法不同。与while循环相比,do-while 循环将while关键字和循环条件放在后面,而且前面多了do关键字,后面多了一个分号。
(2)执行次序不同。while 循环先判断再执行;do-while 循环先执行再判断。
(3)一开始循环条件就不满足的情况下,while循环一次都不会执行,do.while循环则不管什么情况都至少执行一遍。

for循环

        在Java语言中,循环结构不止while和do-while两种,还有for循环结构。在解决固定循环次数的问题时,可以首选for循环结构。

语法结构如下:

for(表达式1;表达式2;表达式3){

//循环执行的语句

}

记住,这里for就是此循环结构的关键字,每个表达式的含义见下表:

        for关键字后面括号中的3个表达式必须用分号”:“隔开。for循环中的这3个部分以及{ }中的循环体使循环结构必需的4个组成部分完美地结合在了一起,非常简明。

for循环语句的执行过程如下:

for循环语句的执行顺序如下:

第一步:执行初始部分(int i=0)。
第二步:进行循环条件判断(i<100)。
第三步:根据循环条件判断结果。
①如果为true,执行循环体;
②如果为false,退出循环,第四步、第五步均不执行。
第四步:执行迭代部分,改变循环变量值(i++)。
第五步:重复第二步~第四步,依次进行直到退出for循环结构。
可见,在for循环中,表达式1这个初始部分仅仅执行了一次。

注意:根据for循环的语法,我们知道for循环的循环条件中有3个表达式,在语法上,这3个表达式都可以省略,但表达式后面的分号不能省略。如果省略了表达式,要注意保证循环能够正常运行。
(1)省略“表达式1”,比如下面的for循环语句。
           for(;i<10; i++)
    这个for循环虽然省略了“表达式1”,但其后的“;”号没有省略。在实际编程中,如果出现“表达式1”省略的情况,需要在for语句前给循环变量赋值,因此可将上面的语句修改为:
          int  i=0;
          for(;i<10; i++)
(2)省略“表达式2”,即不判断循环条件,循环将无终止运行,也就形成了“死循环”,比如下面的for语句。
          for(int i=0;;i++)
在编程过程中要避免“死循环”的出现,所以对上面的语句可以做如下修改:

           一种方法是添加“表达式2”, 另一种方法是在循环体中使用break 语句强制跳出循环。关于break的用法将在下一节介绍。
(3)省略“表达式3”,即不改变循环变量的值,也会出现“死循环”,比如下面的语句。
           for(int i=0:i<10;)
       这里省略了“表达式3”,变量i的值始终为0,因此循环条件永远成立,程序就会出现“死循环”在这种情况下,可以在循环中改变i的值,比如下面的语句。
           for(int i=0;i<10)(
            i++;
     这样就能使循环正常结束,不会出现“死循环”。
(4)3个表达式都省略,比如下面的语句。
          for( ;;  )
        上面这个语句在语法上没有错误,但在逻辑上是错误的,可以参考上面3种情况的描述进行修改。在实际开发中,为了提高代码的可读性,尽量不要省略各个表达式。如果需要省略,可以考虑是否改用while 或do-while循环。

break的使用

        在有些时候,需要在某种条件出现时强行终止循环,而不是等到循环条件为false时才退出循环。此时,可以使用break 来完成这个功能。break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统將完全結束该循环,开始执行循环之后的代码。

        break 语句用于终止某个循环,使程序跳到循环块外的下一条语句。在循环中位于break后的语句将不再执行,循环也停止执行。break 语句不仅可以用在for循环中,也可以用在while与do-while循环中。break语句通常与if条件语句一起使用。

continue的使用

        continue 的功能和 break 有点类似,区别是continue 只是终止本次循环,接着开始下一次循环,而break则是完全终止循环本身,可以理解为coninue的作用是跳过本次循环,重新开始下一次新的循环。

         continue语句只能用在循环结构中。continue可以用于for循环,也可以用于while和do-while 循环。在 for 循环中,continue 使程序先跳到迭代部分,然后判断循环条件,如果为true,继续下一次循环,否则终止循环。在while循环中,continue执行完毕,程序将直接判断循环条件。
          在Java 语言中,还可以在break 和 continue 语句上带语句标号。语句标号用来表示一层循环结构,使用标号的break和continue语句表示在指定的那层循环中跳转。
 

 

 


 


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值