【相关链接】
上一篇:小白学Java 第11课:switch 多分支语句
下一篇:小白学Java 第13课:while 循环
总纲:返回列表
从这一节开始,我们开始讲循环,Java程序中常见的循环有 for 循环,while 循环,do while循环,foreach 循环 等。
我们先从最简单的 for 循环开始说起。
【1】什么是循环?
看到这个小标题,肯定大多朋友都在偷笑,循环不就是反反复复的做一件事么?是的!这就是循环的定义。
比如:小张清晨在操场跑步,假设小张每天跑10圈,那么他跑完需要循环操场跑10圈。如果小张每2圈喝水一次,那么小张需要喝水5次。
【2】for 循环结构
for 循环的结构如下所示:
for(初始变量;循环完成条件;步伐大小) {
// 每次循环要做的事
}
下面我分别解释每个名次条件:
初始变量:简单的说循环就是从多少开始算起,上面小张每天从第1圈跑到第10圈,所以初始变量值就是1。假设我们给第几圈这个变量取名为x,那么这里就应该为 int x = 1;
循环完成条件:循环往往会有一个最大循环次数,比如这里小张跑10圈,那么这个10就是小张的循环完成条件,所以当 x 小于或者等于10的时候,小张才会继续跑步,当跑到11圈的时候,小张就会停止跑步,因为他每天只跑10圈。
步伐大小:小张跑完第1圈,就接着跑第2圈,接着第3圈,......., 两次挨着的圈序列只相差1,这里的1就是跑步圈数步伐,小张每2圈喝一次水,那么第1圈喝了的话第3圈才会喝,第3圈喝了的话第5圈才会喝,......,没喝一次水,需要2圈,那么这里步伐就是2。当步伐为1的时候,需要循环10次,当步伐为2的时候,循环只需要5次。可见,当步伐越大,循环次数越少。
每次循环要做的事:这个就很好理解了,小张每圈就做了2件事。第一件是跑步,这一件事是每圈都在做。第二件事是喝水,这个是每2圈做一次。
【3】具体实现
(3.1)小张跑步
假设我们以小张跑步这件事来实现,那么他的相关代码就如下:
for(int x = 1; x <= 10; x++) {
System.out.println("第 " + x +" 圈跑完了");
}
新建类 Test12,我们将这段代码运行下试试:
可以看到,程序执行完,小张10圈已经跑完了,大家可以根据代码对照下上面的 for 循环结构式对比下,加深理解。
(3.2)小张喝水
上面的是跑步事件,那么小张喝水该怎么用程序来表示呢?
具体如下:
for (int x = 1; x <= 10; x = x + 2) {
System.out.println("第 " + x + " 圈喝水");
}
程序执行后,校长一共只喝了5次水,所以只循环了5次,因为喝水的步伐两次之间的间隔为了2。
【4】死循环
(4.1)什么是死循环
所谓死循环,就是程序一直循环下去,逻辑上没有终止条件。在 for 循环中,如果取消中间的条件不写,那么就是一个死循环。
可以看到,程序的执行速度是非常快的,1秒内都执行了几十万次循环,死循环他并不会停止,并且他将会一直执行下去。
(4.2)死循环慎用
从逻辑上来说,死循环是可以一直执行下去的?
但在实际工作中,如果程序中出现了死循环,大多是有问题的,也经常是不被允许的,因为他会无效的消耗计算机的资源,最后导致计算机崩溃。所以在写死循环的时候,要慎之又慎,如果确实有这种需求,也要反复进行测试。或者在死循环中思考是不是可以减少其频率,比如每几分钟执行1次,不然不间断的每秒执行几十万次这是非常可怕的。
【5】多重循环
上面我们将的都是一个 for 循环,当 for 循环里面再套一个 for 循环的时候,这两个for循环凑在一起就叫做【双重循环】,
将设我们将一个循环简记为如下:
for () {
}
那么双重循环的简单结构就是如下所示: 其中我们称里面的for循环为内循环,外面这个为外循环。
for () {
for() {
}
}
假设小明平均一个月跑步30天,那么小明平均每个月需要跑步多少圈呢?我们就可以用双重循环如下表示:
设小明每天跑步的圈数为 x,小明每个月的天数为 y,那么就可以如下表示:
for (int y = 1; y <= 30 ; y ++) {
for (int x = 1; x <= 10 ; x ++) {
System.out.println("小明跑步,第" + y + "天第" + x +"圈");
}
}
我们将代码执行下看看:可以看到,小明每天每圈的跑步都被循环记录了下来。
当继续往最小的循环里嵌套,形成三个for循环嵌套时候,这时候就成了【三重循环】,
结构如下:
for() {
for() {
for() {
}
}
}
比如小明一年跑12个月,那么就可以通过三重循环求出小明一年的跑步记录。
以此推之,四重循环,五重循环,........
循环越多,代码结构越复杂,代码的可读性也会越来越差,所以如果出现了3重循环以上,应该可以考虑是否可以优化代码或者换个思维。