7.5 for语句
前面编写的循环有几个共同之处:都先初始化一个变量,都有一个依赖于这个变量的条件,且都在循环体内修改这个变量。这种循环很常见,为了以更简洁的方式表示,Java 提供了另一条语句——for 循环。
例如,我们可以将 printTable 重写为下面这样:
public static void printTable(int rows) {for (int i = 1; i <= rows; i = i + 1) {printRow(i, rows);}}
for 循环在括号内包含 3 个由分号分隔的部分:初始化部分、条件部分和更新部分。
(1) 初始化部分只在循环开始时运行一次。
(2) 每次循环前都检查条件部分,如果它为 false,循环将终止;否则就再次执行循环。
(3) 每次迭代结束时,都运行更新部分再返回到第 2 步。
通常来说,for 循环更容易理解,因为它将所有与循环相关的语句都放在了循环开头。
while 循环和 for 循环的一个不同之处在于:若在初始化部分声明了变量,那么该变量只在 for 循环中可用。例如,下面是一个使用 for 循环的 printRow 版本:
public static void printRow(int n, int cols) {for (int i = 1; i <= cols; i = i + 1) {System.out.printf("%4d", n * i);}System.out.println(i); // 编译错误}
最后一行试图显示 i(这样做只是为了演示),但行不通。要想在循环外使用循环变量,就必须在循环外声明它,如下所示:
public static void printRow(int n, int cols) {int i;for (i = 1; i <= cols; i = i + 1) {System.out.printf("%4d", n * i);}System.out.println(i);}
在 for 循环中,很少用 i = i + 1 这样的赋值语句,因为 Java 提供了表示加 1 和减 1 的更简洁方式。具体地说,++ 是递增(increment)运算符,与 i = i + 1 等效;而 -- 是递减(decrement)运算符,与 i = i - 1 等效。
如果给变量加上或减去的值不是 1,而是其他值,可用运算符 += 或 -=。例如,i += 2 表示将变量 i 加 2。
