1. while 循环
1.1 语法
while
循环是最简单的循环形式。我们先来看看它的基本用法:
- 1
- 2
- 3
- 4
- 5
while
循环在每次循环开始前,首先会判断条件是否成立,如果计算结果为true
, 就会执行循环体内部语句。如果计算结果为false
,会跳出循环,执行后续代码。
1.2 实例
对于打印从1到5的例子,可以使用while
循环可以这样写:
你也许注意到在循环体内部,除了打印变量i
的值,还有一个语句:i ++
,这个语句的作用是让变量i
自增1。如果没有这个语句,i
的值永远不会改变,所以循环条件永远成立,程序将陷入死循环,直到将资源耗尽才会停止,所以要杜绝编写死循环代码。
再看一个例子,得到1到100的累加和:
运行结果:
- 1
我们来对程序进行解析:
- 定义两个变量
sum
和i
分别用于存放累加和以及要累加的数字。 - 循环开始前判断条件
i <= 100
是否成立,此时i = 1
,成立,执行循环体内代码。 - 循环体内代码第一次执行,
sum = 1
,i
自增1变为2。 - 再次判断循环条件,成立就继续执行循环体,直到
i = 100
,自增1 变为101,此时条件不成立。执行循环后面的代码。 - 执行打印语句,打印最终的
sum
值,程序结束。
2. do while 循环
2.1 语法
do while
循环的功能与while
循环类似,不同点在于:while
循环是先判断条件,再执行循环体;而do while
循环则是先执行循环体,再判断条件,如果条件成立继续执行循环,条件不成立则终止循环。do while
循环的语法如下:
- 1
- 2
- 3
无论条件成立与否,do while
循环都至少执行一次。而while
循环可能一次都不会执行。
2.2 实例
我们现在使用 do while
循环实现1到100的累加求和,代码如下:
运行结果:
- 1
3. for 循环
3.1 语法
下面是for
循环的语法结构:
- 1
- 2
- 3
for
循环是一种特殊的while
循环,也是被使用最广泛的循环。它使用计数器来实现循环。在关键字 for
后面的括号中,会有三个语句,第一个语句是变量声明语句,允许声明一个或多个整型变量;第二个语句是条件,条件的检测方式与while
循环相同(每次循环开始前判断条件成立与否);第三个语句是迭代语句,虽然可以是任何语句,但该语句通常用于递增或递减变量。
3.2 实例
我们使用for
循环连续打印5行”汉码未来真棒“的字样,代码如下:
运行结果:
- 1
- 2
- 3
- 4
- 5
我们现在使用for
来实现1到100的累加求和,代码如下:
运行结果:
- 1
程序解析:
在执行循环体前,会先执行括号中的变量声明语句int i = 1
,它定义了一个计数器变量i
并且赋值为1(注意这个语句只执行一次)。然后会执行条件判断语句i <= 100
,显然条件成立,执行循环体,循环体执行完成后会才会执行括号中的第三个语句i ++
,再次判断条件是否成立,直到当i
的值为100时,最后一次执行循环体,这个时候i
再次自增1
为101
,条件不成立,结束循环。
实际使用中,通常使用for
循环来遍历一个数组,我们将在 Java 数组小节举例介绍。
for
循环中第一个语句,变量声明语句可以一次声明多个整型变量,实例代码如下:
运行结果:
- 1
另外,for
循环还可以缺省变量声明语句、循环条件和迭代语句,实例:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
但请注意,通常情况下不建议这样写。
4. for each 循环
由于学习 for each
循环需要一些数组和集合的前置知识,我们将会在 Java 数组小节举例讲解。
5. break 和 continue 关键字
我们可以使用break
和continue
语句来重定向程序执行流。
5.1 break
break
关键字可以出现在一个循环中,用以跳出当前循环。我们来看一个实例:
运行结果:
- 1
- 2
- 3
上面是一段循环打印数字的代码,当循环到达第3次迭代时,执行条件分支中的语句,将终止循环。注意:break
语句通常配合if
语句使用。
对于多层循环的情况,break
语句只能终止它自己所在的那一层循环,并不会影响到外层循环。请阅读如下代码:
运行结果:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
上面的代码有两个for
循环嵌套,break
语句位于内层循环,所以当表达式j == 3
成立时,会跳出内层循环,进而继续执行外层循环。
5.2 continue
continue
关键字可以跳过当次循环,继续执行下一次循环,我们来看一个实例:
运行结果:
- 1
- 2
- 3
- 4
- 5
在多层嵌套的循环中,continue
语句只能跳过它自己所在位置的循环。
6. 小结
本节中,我们依次介绍了Java
中的四种循环结构:while
循环、do while
循环、for
循环以及for each
循环。并且介绍了break
和continue
关键字在循环中的使用。
其中,while
循环的循环体可能一次都不执行,而do while
循环的循环体至少执行一次。
for
循环通过计数器实现复杂循环。for each
循环可以直接遍历数组的每个元素。
在使用循环结构编写业务代码时,为了避免死循环,一定要确保循环条件能够被影响。