现在让我们继续一起来学习另外一种循环语句–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);
//}
}
}