您的位置:首页 > 编程语言 > Java开发

java基础-循环三剑客while,do..while,for

2016-11-28 13:40 696 查看
循环迭代几乎是每一门编程语言(至少我目前接触到的)都具有的功能,这也是使计算机实现高速计算的一个重要方式之一。因此,如果说上一章博客中的判断语句是编程语言的眼睛,用来辨认执行的条件。那么循环语句可以说是编程语言的灵活的躯干,用来快速执行各种计算操作。总的来说编程语言可以归纳为三种执行方式:顺序执行:就是在程序不被中断的情况下,每条语句从上往下逐条执行,也是计算机默认的执行方式。选择执行:即上一章说到的判断语句,也叫选择语句,一般在此处,计算机可根据实际需求选择性地忽略部分代码,其他的则继续以顺序执行的方式执行:循环执行即这一章要介绍的循环语句,他是在特定的条件下,对特定区域内的语句进行不断地循环操作,直到最后的结果符合退出循环的条件,也就是说,要想程序能够正常执行,则如果遇到循环语句的时候,需要使循环条件的操作能够得出使程序退出循环语句的结果。下面进行讲解介绍:

1.while循环

while循环的语句格式如下:

while(判断条件){

//特定代码块,用{ }包起来

}//这里后面不用加

事实说话:



在这里可以看出,当判断条件为true,也就是i符合 i<10 时,计算机会一直顺序地执行{ }内的代码块,直到i==10,也就是判断条件为false时,退出循环,执行下面的代码。也就是说,当遇到循环代码块时,计算机会判断是否符合判断条件,如果符合,执行循环,完毕后再判断一遍是否符合,如果符合,继续循环,以此类推,直到条件为false,则退出。

do…while循环

do..while循环是while循环的一个变种,其思路和while几乎一致,但有的地方也有区别:

先说格式:

do…while循环的格式如下:

do{

//特定代码块

}while(判断条件);//记住这个地方有号结尾

事实说话:



看,和while循环用的是一样的例子。判断条件都是i<10;循环代码块也是打印和自加1,直到i自加到10;退出循环。但是这两种循环虽然神似,但两兄弟总还是有需要一些不一样的地方,不然都一样的话,要他何用呢。接下来我们看一下while和do…while之间的区别所在

区别:

先看while的格式

while(判断条件){

//特定代码块

}

do..while的格式

do{

//循环代码块

}while(判断条件)

观察两个循环语句的格式,我们发现,相比于while而言,do…while的判断条件是放在循环代码块之上的,也就是说,当使用do…while语句时,计算机会先执行一次循环代码块,然后再判断。而基于这一原理,有的时候,就算执行代码块和判断条件一致,while和dowhile间的计算结果未必相同。看图:



图解:从图中可以看到,dowhille中,先执行了一次i–,再判断是否符合判断条件,false,退出,结果为9. 而在while中,首先判断i<=8?false,直接退出,结果则为10.由此,在选择while还是dowhile的问题上,有时候需要根据实际情况进行选择和调整,而不是说两者全部都互动有无哦。

for循环:

以上两种循环方式介绍完之后,相信有的小伙伴已经在纠结改选哪个了?放心,我们接下来还会有一个让你纠结的。那就是我们最常用到的for循环。它的格式和前面两个和前面有些不一样,但更加灵活,请看:

for(初始条件;判断条件;控制代码){//注意!最后一个条件后面不用

代码块

}

如果看这个很懵逼的话,下面也有图滴~:



在这里,可以把初始条件理解为while/do…while里面的那个变量,而判断条件则是判断该变量是否符合了条件,控制代码则是在执行完循环代码之后,为了使变量能够最终退出循环而进行的控制语句。相当于是从循环代码中抽取最后一部分出来的代码。相信有图的话会更直白:



同样的代码,只不过把控制代码移到了最后,我们同样能得出结果。这也是为什么说for循环灵活多变的原因,就是因为初始条件和控制代码都不一定要放在特定的位置上,当然如果你想的话,甚至可以连判断条件都不用,但那样的话是及其危险的,有可能会涉及到接下来要说的死循环的问题,所以一般不建议这么去做。对于平时的程序开发而言,为了使代码具有可阅读性,免得以后修改的时候摸不着头脑,我们一般用普通的格式,也就是我们上面给出的格式来使用就可以了。

死循环:好了,到了本章的最后一个知识点,也是比较好玩的一个知识点。就是死循环。

什么叫死循环?意思就是说我们的判断条件一致保持true的状态,使得程序一致在循环执行某一段代码,既不退出,也不再往下执行。一直到电脑死机或者系统崩溃才罢休。就比如,一只老鼠爬进了米缸,吃光了所有的米之后,发现洞口太高再也爬不出来一样,这是开发中最需要避免的一个问题,一个程序员如果在开发中写出了死循环,那么他会被同行狠狠地嘲笑的,因为这是一个只有刚开始学习的新手才有可能犯得错。所以,为了不被嘲笑。我们在写循环的时候,需要时刻想着,我要给老鼠留个口出来,也就是思考程序在什么时候需要退出循环。那么,如何给程序“开个口”呢,有两种办法,一种是自然型的,也就是我们上面说的用控制代码使判断条件为false,程序自动退出。而另一种则比较变态,是暴力型。我们在上一章说过的break关键字就重出江湖了。它的作用是当执行到break时,程序自动强制退出距离break最近的那对{ },开始执行下面的代码,而不管里面还有多少代码没有执行完毕。相当于老鼠天生神力打破米缸逃走了一样。

最后,在循环中本来还有一个for循环的远亲,叫做foreach循环,不过这货一般用于数组的遍历上,所以这里不讲,等到讲到数组的时候再给大家介绍。循环到此结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程语言 迭代 博客