for轮回在第一次重复之前要举办初始化。随后,它会举办条件测试,并且在每一次重复的时候,举办某种形式的“步进”(Stepping)。for轮回的形式如下:
for(初始表达式; 布尔表达式; 步进)
语句
无论初始表达式,布尔表达式,照旧步进,都可以置空。每次重复前,都要测试一下布尔表达式。若得到的功效是false,就会继承执行紧跟在for语句后头的那行代码。在每次轮回的末端,管帐算一次步进。
for轮回凡是用于执行“计数”任务:
//: ListCharacters.java // Demonstrates "for" loop by listing // all the ASCII characters. public class ListCharacters { public static void main(String[] args) { for( char c = 0; c < 128; c++) if (c != 26 ) // ANSI Clear screen System.out.println( "value: " + (int)c + " character: " + c); } } ///:~
留意变量c是在需要用到它的时候界说的——在for轮回的节制表达式内部,而非在由起始花括号标志的代码块的最开头。c的浸染域是由for节制的表达式。
以于象C这样传统的措施化语言,要求所有变量都在一个块的开头界说。所以在编译器建设一个块的时候,它可觉得那些变量分派空间。而在Java和C++中,则可在整个块的范畴内分手变量声明,在真正需要的处所才加以界说。这样便可形成更自然的编码气势气魄,也更易领略。
可在for语句里界说多个变量,但它们必需具有同样的范例:
for(int i = 0, j = 1; i < 10 && j != 11; i++, j++) /* body of for loop */;
个中,for语句内的int界说同时包围了i和j。只有for轮回才具备在节制表达式里界说变量的本领。对付其他任何条件或轮回语句,都不行回收这种要领。
1. 逗号运算符
早在第1章,我们已提到了逗号运算符——留意不是逗号脱离符;后者用于脱离函数的差异自变量。Java里独一用到逗号运算符的处所就是for轮回的节制表达式。在节制表达式的初始化和步进节制部门,我们可利用一系列由逗号脱离的语句。并且那些语句均会独立执行。前面的例子已运用了这种本领,下面则是另一个例子:
//: CommaOperator.java public class CommaOperator { public static void main(String[] args) { for(int i = 1, j = i + 10; i < 5; i++, j = i * 2) { System.out.println("i= " + i + " j= " + j); } } } ///:~
输出如下:
i= 1 j= 11 i= 2 j= 4 i= 3 j= 6 i= 4 j= 8
各人可以看到,无论在初始化照旧在步进部门,语句都是顺序执行的。另外,尽量初始化部门可配置任意数量的界说,但都属于同一范例。