01_basic_11_for_statement

第十一章 for循环语句(for statement)

1 for语句的基本使用方法

for循环语句是一种支持迭代的循环语句。一个经典的应用场景是在初始化计数器之后,每次循环增加计数器的值,直到累计到一个阈值为止,停止循环。在Java语言的for语句结构中,for是Java语言的关键字,用于标识for语句。当执行一条for语句时,程序首先执行Init部分的内容。Init部分主要用于初始化变量,例如:计数器变量。Init部分可以包含多个表达式。这些表达式按照从左到右的顺序依次运行。如果在Init部分定义了变量,那么这些变量是局部变量,仅在for语句内可见。

在初始化后,for语句会计算表达式Condition的值。当Condition的值为true时,程序会进入循环体,执行body中的语句。如果当Condition的值为false时,程序会跳过body,执行for语句的下一条语句。当表达式Condition的值是Boolean类型的对象时,for语句会自动执行拆箱操作(Unboxing),将其转换成相应的boolean类型的值,然后再判断是否继续执行body中的语句。

每当执行完body中所有语句之后,程序会执行Update部分的语句。在通常情况下,计数器的值会在Update部分中更新。

Init,Condition和Update都是可选的。开发人员可以省略其中任意一个或者多个。当表达式Condition被省略时,for循环语句会无限次地循环执行body和Update中的语句。在这种情况下,唯一结束for语句的方法是使用break语句。当body中只包含一条语句时,花括号可以省略。

for (Init : Condition : Update) {
    body
}

使用for循环计算1-10的和非常方便。如下所示,在for循环中,初始化了计数器i。并且在每次循环结束后,递增i的值。直到i的值大于10之后,退出循环。

int sum = 0;
for (int i = 0; i <= 10; i++) {
    sum += i;
}

System.out.println("The sum of [1, 10] is " + sum);

2 for语句的增强形式(The enhanced for statement)

Java语言还支持第二种for循环语句结构,称为for语句的增强形式。在应用程序中,我们常常需要遍历数组或者链表中的所有元素。使用增强形式的for循环语句为这种遍历提供了方便的实现。

增强形式的for语句格式如下所示。LocalVariable定义了一个本地变量,仅在for语句中可见。Expression则表示一个数组或者可迭代的容器(实现了接口Iterable的对象)。LocalVariable的类型与Expression中元素的类型相同。

在运行for语句时,程序会按照一定顺序访问容器中的每一个元素,并执行body中的语句。直到每个元素都被访问过一次为止。

for (LocalVariable: Expression) {
    body
}

例如,如下的示例代码计算数组a中所有整数的和。如果在循环体内,变量e不会发生变化的话,那么可以使用关键字final把e声明为常量。

int[] a = {1, 2, 3};
int sum = 0;
for (final int e: a) {
    sum += e;
}
System.out.println("The sum of elements in a is " + sum);

有时,在for语句中使用var能帮助开发人员更快的完成编码。

int[] a = {1, 2, 3};
int sum = 0;
for (var e: a) {
    sum += e;
}
System.out.println("The sum of elements in a is " + sum);

3 小结

Java语言支持两种格式的for循环语句。第一种格式的for循环语句为开发人员提供了更灵活的循环控制逻辑。Init、Condition和Update均为可选的部分。开发人员可以在Init部分声明局部变量,用于控制循环逻辑。这个局部变量仅在for语句内部可见,所以它不会"污染"for语句外部的命名空间。第二种形式的for语句被称为for语句的扩展格式。使用这种扩展格式,开发人员能够方便的遍历容器中的每一个元素。

上一章
下一章

注册用户登陆后可留言

Copyright  2019 Little Waterdrop, LLC. All Rights Reserved.