Java 从 JDK 5 开始引入了 Foreach 循环。它的目的是按顺序迭代 Collection 或数组的所有元素。在其他语言(如 C#)中也存在这种情况,它使用关键字 for-each。然而,与 C# 不同,Java 使用关键字“for”仅用于实现 for-each 循环,但其语法与传统的 for 循环不同。这种 for-each 循环在 Java 中也称为增强型 for 循环。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
语法:
for(type iter_var : Collection) statement_block
上面使用的每个术语的解释如下:
需要注意的是,for-each 循环按顺序访问集合/数组元素,其中它将每个元素的值存储在迭代变量中。以下是 for-each 循环的流程图。
正如您所注意到的,for 循环和 for-each 循环之间存在某些细微的差异。 For循环需要预先指定迭代次数。然而,for-each 循环的情况并非如此,因为循环从 Collection/array 的第一个元素迭代到最后一个元素,并且不需要指定迭代次数。
要记住的重要一点是 for-each 循环中指定的类型必须与集合中元素的类型匹配,否则会出现兼容性问题。
以下是不同的示例:
让我们使用 for 循环计算一组人的平均年龄:
代码:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int sum = 0; System.out.print("Ages of the group are : "); for (int i = 0; i < 10 ; i++) { System.out.print(ages[i]+" "); sum += ages[i]; } System.out.println("\n Average age of the group = " + (sum/10)); } }
输出:
使用 for-each 循环查找一组人的平均年龄:
代码:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int sum = 0; System.out.print("Ages of the group are : "); for (int x : ages) { System.out.print(x+" "); sum += x; } System.out.println("\n Average age of the group = " + (sum/10)); } }
输出:
使用两个循环的输出是相同的,如上图所示。
使用break语句可以减少for-each循环的迭代次数。例如,如果我们只想求前 5 个元素的总和,我们可以使用break语句,如下所示:
代码:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int ctr = 0, sum = 0; System.out.print("Ages of the group are : "); for (int x : ages) { System.out.print(x+" "); } for (int x : ages) { if (ctr == 5) break; sum += x; ctr += 1; } System.out.println("\nSum of age of first 5 people of the group = " + sum); } }
输出:
在上面提到的 for-each 循环中,x 是迭代变量,每次迭代存储数组的一个元素,该元素在下一次迭代中发生变化。在第一次迭代中,x 存储数组的第一个元素和最后一次迭代元素的最后一个元素。与 for 循环不同,我们使用索引访问数组元素,for 每个循环使用迭代变量来访问元素。
使用 for 每个循环时需要小心,因为迭代变量临时存储数组元素的值,因为它是“只读”的,并且更改其值不会修改原始数组。这与 for 循环相矛盾,在 for 循环中更改元素会修改原始数组。
让我们考虑一个例子,我们将 5 添加到数组的每个元素。我们可以在以下示例代码中发现输出的差异:
不同条件下的for循环解释如下:
代码:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; System.out.print("Elements of the array are : "); for (int i = 0; i < 10; i++) { System.out.print(ages[i]+" "); ages[i]+= 5; } System.out.print("\nNew elements of the array are : "); for (int i = 0; i < 10; i++) { System.out.print(ages[i]+" "); } } }
输出:
for 循环的输出显示原始数组的更新
不同条件下的for循环解释如下:
代码:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; System.out.print("Elements of the array are : "); for (int x : ages) { System.out.print(x+" "); x += 5; } System.out.print("\nNew elements of the array are : "); for (int x : ages) { System.out.print(x+" "); } } }
输出:
for-each 循环的输出显示原始数组没有更新
以上是Java 中的 For-Each 循环的详细内容。更多信息请关注PHP中文网其他相关文章!