您的位置 首页 java

Java中的循环结构

对于编程语言来说,必然存在三种结构,分别为:顺序结构、分支结构和循环结构,当然,Java也不例外。

对于顺序结构来说,没啥好说的,就是代码从上到下依次执行,期间不存在任何的条件判断和跳转。代码编写顺序是什么样子,其执行顺序就是什么样子。所以,我主要介绍的是另外两种结构,也就是可以用来进行进行流程进行控制的结构,也即:分支结构和循环结构。

关于分支结构我已经在之前的文章介绍过,这里就不过多介绍,本篇只讲循环结构。

循环结构定义

所谓循环结构是指当符合判断条件时重复执行某一段代码,直到不符合判断条件时终止。对于循环结构来说,大致分为四个部分,分别是:初始化语句,循环条件,循环体(也就是需要循环执行的一段代码)、迭代语句或步进语句。

初始化语句:由一条或多条语句组成,在循环开始之前执行。

循环条件:就是一个布尔表达式,决定是否应该执行循环体

循环体:需要被循环执行的一段代码。

迭代语句:每一次循环执行完毕后,在执行下一次循环判断条件执行执行的语句,目的是控制循环条件中的变量,从而使得循环在合适的时机结束。

循环结构示例

在Java中的循环大致分为:while、do-while、for三种。

  • while

对于while循环来说,其格式为:

while (循环条件) {

执行代码

}

关于while的示例代码如下图所示:

其执行结果如下图所示:

其中,迭代语句作为循环体的一部分放在了循环体中。需要强调一点的是,循环判断条件必须存在结束的条件也就是指为false的情况,否则会导致死循环。下面的例子就是死循环的情况。

由于迭代语句为自减,而count会恒小于0,不管运行多久,循环条件的值会一直为true,从而导致死循环。

  • do-while

对于do-while循环来说,其格式为:

do {

执行代码

} while(循环条件);

需要说明的是,while括号后面的分号不可省略。关于do-while循环的示例代码如下图所示:

其执行结果如下图所示:

do-whille和while从结构上有些类似,实际上大多数情况下,使用while和do-while的区别不大。而且都要求必须存在使循环条件为false的情况来结束循环。但是从本质上看,两者还是有区别的。

对于while循环来说是先判断循环条件后执行循环体,而do-while循环则是先执行循环体再进行判断循环条件。这样,当首次判断循环条件的结果为false时,对于while来说不会执行循环代码,而do-while则会执行一次循环代码。如下图的例子所示:

执行结果如下图所示:

因此在选择while和do-while时,需要想清楚自己的需求。

  • for

for循环是Java中常用的循环,其格式为:

for (初始化语句; 循环条件; 迭代语句) {

执行代码

}

关于for循环的示例代码如下图所示:

执行结果如下图所示:

相比于while循环和do-while循环,for循环看起来更加层次分明。因为for循环将初始化语句和迭代语句也囊括在了一个括号中,不像while循环和do-while循环那样,将初始化语句放在循环之前,迭代语句放在循环体中。当然,这只是感官上的区别。

实际上,在大多数情况下,for循环完全可以取代while循环和do-while循环。

另外需要强调一点的是,尽量避免在循环中修改循环变量的值。否则就可能出现死循环。下图就是一个在循环中修改循环变量,从而导致死循环的例子。

此外for循环还有多种省略写法,其中,初始化语句、循环条件、迭代语句甚至循环体都可以省略,最简洁的for循环为:

for(;;) {

}

这种写法在语法上是允许的。只不过由于没有循环条件,因此会一直执行循环体。虽然循环体中没有任何的语句,但是这依然是个死循环,导致程序无法跳出循环继续向下执行。当然,这种玩法也只有在各种面试题中见到,日常开发中很少见。

以上所讲得都是单层循环,实际上循环是可以多层嵌套的。比如下图所示:

执行结果如下图所示:

循环结构的控制

所谓循环的结构的控制就是在适合的时候中断循环或跳过本次循环的剩余的语句开始下一次循环。在Java中,通常用break来中断循环结构,用continue来跳过本次循环中剩余的语句并开始下一次循环。

  • break中断循环

对于break来说,不论是哪种循环,只要执行到break便会中断整个循环,其示例代码如下图所示:

其执行结果如下图所示:

本例子是在i为5的时候使用break来中断循环,如果没有这步操作,本该打印从0到9,但是有了之后在i为5的时候便通过break终止了循环的执行,因此只打印出了从0到4。

  • continue跳过本次循环

与break类似,continue也是适用于任何的循环结构,只不过continue只是跳过本次循环中continue之后的语句立即开始下一次循环罢了。其示例代码如下图所示:

其执行结果如下图所示:

由于在i为5的时候使用了continue来调用continue之后的语句,从而导致打印语句被跳过,因此打印出了除5之外的从0到9的数字。

  • 使用标签来辅助break和continue

此外,Java中还存在使用标签来辅助break和continue的使用。因为,不论是break还是continue都只会中断或跳过当前层的循环。若循环为嵌套循环,却像在内层循环中断或跳过外层循环,就可以通过标签的辅助来实现。

Java中定义标签的语法是“标签名:”。虽然标签名可以在很多位置定义,但是只有放在循环前时才有意义。下面我分别给出break和continue使用标签的例子。

break使用标签的例子如下图所示:

其执行结果如下图所示:

continue使用标签的例子如下图所示:

执行结果如下图所示:

文章来源:智云一二三科技

文章标题:Java中的循环结构

文章地址:https://www.zhihuclub.com/185408.shtml

关于作者: 智云科技

热门文章

网站地图