循环语句(下篇)

现在让我们继续一起来学习另外一种循环语句–for循环语句。

在Java中,for循环语句的基本结构如下,

for (循环变量; 循环条件; 表达式) {
    ...
}

注意这里的间隔符”;”也是代码的一部分。如果想要使用for语句来让电脑从一数到一百,可以这样编写代码,

for (int counter = 1; counter <= 100; counter++) {
    System.out.println(counter);
}

与上一篇教程中使用while语句

int counter = 1;
while (counter <= 100) {
    System.out.println(counter);
    counter++;
}

最大的不同是,这里将计数器变量counter的声明和初始化,放到for循环语句的“循环变量”部分进行了;而且每次执行代码块后将变量counter自增一个单位的操作,也被放到for语句的“表达式”部分了。

接下来我们梳理一下程序是怎样执行for语句的。

当程序遇见for语句时,会首先检查循环变量部分是否有代码,如果有代码就执行,比如像前面那样声明一个计数器变量。当然,循环变量部分可以没有代码,比如像下面这样编写代码,

int counter = 1;
for (; counter <= 100; counter++) {
    System.out.println(counter);
}

一般情况下,不推荐大家像上面这样编写代码。因为这里目前为止编写的代码只会在for语句内部使用到变量counter,不会在其他地方再用到它。

假设现在我们想要程序在执行完for语句后,打印出来这个计数器变量的最终值,那么就得这样编写代码,

int counter = 1;
for (; counter <= 100; counter++) {
    System.out.println(counter);
}
System.out.print("计数器变量counter的最终值:");
System.out.println(counter);

如果使用第一种方式,像这样,

for (int counter = 1; counter <= 100; counter++) {
    System.out.println(counter);
}
System.out.print("计数器变量counter的最终值:");
System.out.println(counter);

程序就会报错。主要原因是在第五行代码,程序找不到变量counter是在哪里声明的。在for语句循环变量部分声明的变量只能用于for语句内部。

我们继续,程序执行完for语句循环变量部分的代码后,接着判断循环条件是否成立。如果循环条件成立,就执行循环体。否则,就跳过for语句。这个例子中的循环体里面只有一行代码,

System.out.println(counter);

执行完循环体里面的代码后,程序转到for语句的表达式部分。这里仅仅是将计数器变量counter自增一个单位。当然,表达式部分的代码也可以为空,比如像这样,

for (int counter = 1; counter <= 100; ) {
    System.out.println(counter);
    counter++;
}

这里将表达式部分的代码放到循环体内部去执行了。一般情况下不推荐大家像这样编写代码,尤其是表达式部分只有一个操作的时候,比如这里仅仅是将变量counter自增一个单位。

理论上for语句的循环条件部分的代码也可以为空。如果像这样编写代码,

int counter = 1;
for (; /*counter <= 100*/; /*counter++*/) {
    System.out.println(counter);
}

在IntelliJ IDEA中运行这段代码的时候,屏幕上会一直打印“1”。这是因为for语句一直在执行循环体里面的代码。大家还记得“/*..*/”的用法吗,它的作用是将“/*”到“*/”之间的代码变成注释。

上面这段代码等同于下面这段代码,

int counter = 1;
for (; ;) {
    System.out.println(counter);
}

如果在IntelliJ IDEA中运行这段代码,我们不再想要程序一直执行for语句,可以点击输出窗口里面的红色停止按钮,或者输入快捷键“Ctr+F2”。

下面是本节教程的完整代码,

public class LoopsDemo2 {
    public static void main(String[] args) {
        for (int counter = 1; counter <= 100; counter++) {
            System.out.println(counter);
        }

        //for (int counter = 1; counter <= 100; ) {
        //    System.out.println(counter);
        //    counter++;
        //}

        System.out.println("====================");

        //int counter = 1;
        //for (; counter <= 100; counter++) {
        //    System.out.println(counter);
        //}
        //System.out.print("计数器变量counter的最终值:");
        //System.out.println(counter);

        System.out.println("====================");

        int counter = 1;
        for (; /*counter <= 100*/; /*counter++*/) {
            System.out.println(counter);
        }

        //for (;;) {
        //    System.out.println(counter);
        //}
    }
}

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注