声明:原文出处已在文末标出,本人出于学习,对其做了整理,收集干货,不作商业用途!
Java 中采用的循环语句与 C 中的循环语句相似,主要有 while、do…while、for 和 foreach。
while 语句
while 循环语句的语法结构如下:
while(条件表达式){ 语句块; }
图 1 表示了while 循环语句的执行流程:
图1 while 循环语句执行流程图
do…while 语句
do…while 循环语句的特点是先执行循环体,然后判断循环条件是否成立。
do…while 语句的语法格式如下:
do{ 语句块; }while(条件表达式);
其运行流程如图 2 所示:
图2 do…while 循环语句的执行流程
while 循环和 do…while 循环比较
while 循环和 do…while 循环的相同处是:都是循环结构,使用 while(循环条件) 表示循环条件,使用大括号将循环操作括起来;不同处如下:
- 语法不同:与 while 循环相比,do…while 循环将 while 关键字和循环条件放在后面,而且前面多了 do 关键字,后面多了一个分号。
- 执行次序不同:while 循环先判断,再执行。do…while 循环先执行,再判断。
- 一开始循环条件就不满足的情况下,while 循环一次都不会执行,do…while 循环则不管什么情况下都至少执行一次。
for语句
for 语句通常使用在知道循环次数的循环中。
for 语句语法格式如下所示:
for(条件表达式1;条件表达式2;条件表达式3){ 语句块; } for 循环中 3 个条件表达式的含义如表 1 所示:
表达式 | 形式 | 功能 | 举例 |
---|---|---|---|
条件表达式 1 | 赋值语句 | 循环结构的初始部分,为循环变量赋初值 | int i=1 |
条件表达式 2 | 条件语句 | 循环结构的循环条件 | i>40 |
条件表达式 3 | 迭代语句,通常使用 ++ 或 -- 运算符 | 循环结构的迭代部分,通常用来修改循环 变量的值 | i++ |
for 循环语句执行的过程为:首先执行条件表达式 1 进行初始化,然后判断条件表达式 2 的值是否为 true,如果为 true,则执行循环体语句块;否则直接退出循环。最后执行表达式 3,改变循环变量的值,至此完成一次循环。接下来进行下一次循环,直到条件表达式 2 的值为 false,才结束循环,其运行流程如图 1 所示:
图1 for 循环执行流程图
for 语句中的 3 个条件表达式并不是必须存在的,它们可以部分为空,也可以全为空。在 for 循环语句中,无论缺少哪部分条件表达式,都可在程序的其他位置补充,从而保持 for 循环语句的完整性,使之正常进行。在使用时应尽量保证 for 循环语句的完整性,否则容易出现无限循环或死循环问题,且影响代码可读性。
for 语句和 if 语句一样,也可以实现嵌套。要通过 for 语句实现输出九九乘法口诀表,就必须使用 for 语句的嵌套形式:
public class ForDemo1{ public static void main(String[] args){ System.out.println("乘法口诀表:"); for(int i=1;i<=9;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+j*i+"\t"); } System.out.println(); } } }
foreach语句
foreach 循环语句是 Java 1.5 的新特征之一,在遍历数组、集合方面,foreach 为开发者提供了极大的方便。foreach 循环语句是 for 语句的特殊简化版本,主要用于执行遍历功能的循环。
foreach 循环语句的语法格式如下:
for(类型 变量名:集合){ 语句块; } 其中,“类型”为集合元素的类型,“变量名”表示集合中的每一个元素,“集合”是被遍历的集合对象或数组。每执行一次循环语句,循环变量就读取集合中的一个元素,其执行流程如图 1 所示:
图1 foreach 循环语句的执行流程图