本章节,咱们介绍java里的循环,在开始本章节以前,先给你们提出一个问题,好比说,我让你用print显示出10条"Hello baby"的信息,你会怎么作呢? 从咱们之前所学的知识来看,这很简单,只须要System.out.println("Hello baby");十次便可。可是我让你显示出100次甚至更多呢? 也许你说我是无理取闹,是的,这个问题自己并无实际的意义,可是这样的问题实际上就是:屡次执行相同或者有必定规律的操做。在这种时候,咱们须要用到循环。只从语义来说,循环就是do it again and again对吧?可是怎么来作呢?java
java里有两种循环,for循环和while循环,本次,咱们先来介绍for循环。算法
for循环里有两种,普通for循环和for each循环,后者是java后来加上去的,本来是没有的。先说普通for循环:小程序
普通for循环的格式是这样的:数组
for(初始化条件(通常为数据的初始化); 判断条件(通常与前面初始化的数据有关); 条件改变(通常改变那个数据))blog
{执行的操做}(若是执行的操做只有一条语句,花括号能够省略掉,可是建议初学者不要这么作,容易把本身弄糊涂。)数学
那么,上面这个for循环是怎么执行的呢? 咱们来写个小程序,来讲明一下这个问题:it
你看,咱们打印出了10条Hello baby!对吧?可是到底发生了什么呢?下面咱们详细解释一下,for循环
for(int i = 0; i < 10; i ++)循环
{程序
System.out.println("Hello baby!");
}
i是一个整型数据,在for循环的最最开始,它被定义并初始化为0,而后判断它是否小于10,若是小于10,那么执行
for后面花括号里的操做,若是不小于10,直接退出循环。咱们的i目前等于0,因此,执行了操做,打印出了一个"Hello baby!",而后呢? 而后程序将跳转回for后面的圆括号那行,可是,java将从右往左执行,就是说,先执行 i ++,这个是i自加1的意思,因而,咱们的i变成了1,而后判断,i < 10是否为真?为真,由于i如今等于1,既然为真,那就继续跳转进花括号进行操做,因而又打印出一条"Hello baby",而后再跳转到圆括号那里,i ++,i变成2,而后再打印出信息,知道i等于9以后,i++,此次变成了10,i < 10此次为false了,将再也不进入花括号执行操做,而是跳出循环,咱们这个程序,只有一个for循环,跳出此循环,程序就结束了。
这个例子也许没什么实际的意义,那么咱们这里来看看有点儿实际意义的。 著名的数学家高斯,在10岁那年,用较短的时间,轻松的算出了1+2+3+...+100 = 5050, 使得他的老师彪特奈尔异常激动,意识到本身发现了一个天才。咱们如今知道,当年高斯的算法是第一个数加上最后一个数是101,第二个数加上倒数第二个也是101,一共有50对这样的加法,最后获得5050,那么若是咱们用java的for循环来作呢? 咱们在此用两种方法,一种是1+2+...+100,另外一种就是模拟高斯的作法,程序代码以下:
你看,结果是相同的是吧,哎,若是当年有java,那轮获得高斯在那儿装啊? 就算用笨办法也比他作的快啊。惋惜啊,当懒惰的Patrick Naughton在1990年12月大声抱怨C++的时候,距离高斯算出5050这个数字已经213年了。
以上即是普通的for循环,通常来讲,for循环常常控制某些操做的执行次数,因此,多数状况下,会对整形数据进行初始化和自加操做。但这不是绝对的,for循环能够很灵活的,好比下面的例子:
这个例子打印出Thinking in JAVA,可是每次都少打一个字母,这有些像"我顿时凌乱了, 顿时凌乱了,时凌乱了,凌乱了,乱了,了”, 对吧,这个小程序用到了String的基本操做,咱们尚未涉及到。不过这不要紧,我只是说,普通for循环的格式是死板的,可是使用for循环的人是灵活的。
咱们今天就说到这里吧,虽然我原本还想说说for each循环,可是那必然会涉及到数组的问题,而咱们尚未说到数组,因此for each循环咱们留到后面再说吧。