详述 Java 语言中的两种 for 循环

时间:2022-12-13 14:08:52

1 前言

在 Java 语言中,用于循环的语句有两个,一个是 for 循环,一个是 while 循环。而 for 循环其实还有两种实现方法,对于初学者来说,或许仅知道一般的 for 循环,即:

for(初始化条件; 限制条件; 迭代语句) {
// 循环体
}

而不太了解高级的 for 循环,即:

for(变量类型 变量名 : 集合) {
// 循环体
}

在本文中,咱们就一起来了解了解这两种 for 循环的使用方法以及区别。

2 正文

首先,给出代码示例:

import java.util.Arrays;

/**
* @author 维C果糖
* @create 2017-03-31-上午9:30
*/


public class ForDemo {
public static void main(String[] args) {

int[] arr = new int[]{2, 0, 1, 5, 11, 20};

System.out.println("第一种 for 循环方法:");

for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}

System.out.println();

System.out.println("高级的 for 循环方法:");

for (int i : arr){
System.out.print(i + " ");

}

System.out.println();

System.out.println("用 Arrays 的 toString() 方法打印数组:");

System.out.println(Arrays.toString(arr));
}
}

运行上述代码,结果如下图所示:

详述 Java 语言中的两种 for 循环

对于一般的 for 循环,其第 1 部分通常用于给变量进行初始化;第 2 部分给出每次新一轮循环执行之前的判断条件;第 3 部分则给出迭代规则,也就是变量的更新方式。尽管 Java 允许在 for 循环的各个部分放置任何表达式,但有一条不成文的规则,那就是:for 循环的 3 个部分应该对同一个变量进行初始化、判断和更新。

此外,在循环的时候,检测两个浮点数是否相等需要格外的小心,例如:

for(double x = 0; x != 10; x += 0.1)

这个 for 循环就可能永远都不会结束。因为 0.1 无法精确地用二进制表示,所以,x的值将从9.99999999999998直接跳到10.09999999999998. 如果在该 for 循环的下面加一条输出语句,好吧,你将会看到控制台疯狂输出。

当咱们在 for 循环的第 1 部分声明一个变量之后,这个变量的作用域就是整个 for 循环,在 for 循环结束之后,这个变量就将被清理掉,无法继续使用。因此,如果咱们想在 for 循环结束之后,继续使用这个变量,那么咱们就得在这个 for 循环开始之前定义这个变量,简单点,在这个 for 循环的上一行定义就可以。与之相反的,在 while 循环中定义的变量,当 while 循环结束之后,仍然可以继续使用这个变量。

对于高级的 for 循环,其可以用来依次处理数组中的每一个元素(其他类型的元素集合亦可),而不用指定具体的数组角标。在这里,定义的变量用于临时存储集合中的每一个元素,并执行相应的语句,集合表达式必须是一个数组或者是一个实现了 Iterable 接口的类对象。

虽然高级的 for 循环可以帮助咱们快速遍历数组(以其为例)中的全部元素,但是大多数时候,咱们还得使用一般的 for 循环,例如咱们仅需要操作数组中的某一个元素,或者利用数组的角标完成某种需求等等。

最后,从上面的代码示例及运行结果中,咱们还能够发现另外一种更为简单的打印数组中所有元素的方法,那就是:利用Arrays类中的toString()方法,其返回一个包含数组中所有元素的字符串,这个字符串被放置在一个中括号内部并用逗号进行分隔。