for循环是编程语言中一种循环语句,是Java程序员日常工作中的重要组成部分。循环语句由循环体及循环的判定条件两部分组成,其表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。合理使用for循环可以让我们事半功倍,接下来就给大家分享for循环相关的知识。

在Java程序中,要“逐一处理”――或者说,“遍历”――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现。以下是代码对比分析:
遍历数组的传统方式
/ 建立一个数组 /
int[] integers = {1, 2, 3, 4};
/ 开始遍历 /
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.println(i);
}
借助for循环,我们可以用一种更简单地方式来进行遍历的工作:
/ 建立一个Collection /
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/ 开始遍历 /
for (Iterator itr = stringList.iterator(); itr.hasNext();) {
Object str = itr.next();
System.out.println(str);
}

我们还可以借助另外一种语法:for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体实现遍历数组。代码如下:
/ 建立一个数组 /
int[] integers = {1, 2, 3, 4};
/ 开始遍历 /
for (int i : integers) {
System.out.println(i); / 依次输出“1”、“2”、“3”、“4” /
}

注意,Java采用“for”(而不是意义更明确的“foreach”)来引导这种一般被叫做“for-each循环”的循环,并使用“:”(而不是意义更明确的“in”)来分割循环变量名称和要被遍历的对象。这样作的主要原因,是为了避免因为引入新的关键字,造成兼容性方面的问题。

这主要是因为在Java语言中, 不允许把关键字当作变量名来使用,虽然使用“foreach”这名字的情况并不是非常多,但是“in”却是一个经常用来表示输入流的名字(例如 java.lang.System类里,就有一个名字叫做“in”的static属性,表示“标准输入流”)。

在默认情况下,编译器是允许在第二种for循环的循环体里,对循环变量重新赋值的。但这种做法对循环体外面的情况丝毫没有影响,又容易造成理解代码时的困难,所以一般并不推荐使用。

Java提供了一种机制,可以在编译期间就把这样的操作封杀。具体的方法,是在循环变量类型前面加上一个“final”修饰符。这样一来,在循环体里对循环变量进行赋值,就会导致一个编译错误。借助这一机制,就可以有效的杜绝有意或无意的进行“在循环体里修改循环变量”的操作。