4.4 for结构

for语句以三段式作为其标志,可能是用得最多的循环语句。 for语句语法:
for(循环变量定义;条件;循环变量变化)
   语句;
for语句本质上和while语句一样, for三段在具体执行的是这样的:
(1)第一段通常是定义循环变量并给循环变量赋初值,(可以定义多个,具体下面有详述)。第一段只在循环开始的时候执行一次,之后循环不会再执行
(2)第二段是循环条件,必须是布尔值。条件成立执行循环体的代码。
(3)第三段是循环变量递增或递减。每次执行完循环体的代码就运行一次第三段,然后去测试第二段的条件是否成立。
下面这段代码将打印1到100:
public static void main(String[]args){
    for(int i=1;i <= 100;i++)
        System.out.println(i);
}
(4)for语句的三段式,任意一段都可以是空的,但是他们之间的分号不能省略。例如这些都是合法的写法:
//省略第二段
for(int i=0;;i++){
}
//省略第三段
for(int i=0;i < 10;){
}
//三段都省略
for(;;){
}
//省略第一和第三段,这个和while没区别了
for(;i < 10;){
}
for的格式使得写代码的人,不会忘记写循环变量的递增或递减,还有一个就是循环变量定义在for内部,这样for之外是无法读取这个循环变量的,因为任何变量都只在它所处的第一个大括号内有效。 如果后续的代码,还需要用到这个循环变量,那么循环变量需要定义在for外面,例如下面的代码:
//i定义在for之外,这样for结束后还能读取 
int i=0;
for(;i < 10;i++){
    //要循环的代码 
}
//i在这里还可以继续使用
特别注意:省略第二段的时候,实际上相当于条件永远成立,下面的代码是一个死循环:
public static void main(String[]args){
    for(int i=0;;i++){
        System.out.println(i);
    }
}

练习题

  • 阅读代码选择正确答案
    1.下面的代码试图去打印1到10,如果有错误,指出来: (2分) [选择]
    A.
    B. 打印正确
    C. 语法错误
    D. 语法正确,不是死循环但也不能正确打印
    E. 死循环
    for(int i=1,i <= 10,i++)    System.out.println(i);
    
    2.下面的代码试图去打印1到10,如果有错误,指出来: (2分) [选择]
    A.
    B. 打印正确
    C. 语法错误
    D. 语法正确,不是死循环但也不能正确打印
    E. 死循环
    int i=1;for(i <= 10){    System.out.println(i);    i++;}
    
    3.下面的代码试图去打印1到10,如果有错误,指出来: (2分) [选择]
    A.
    B. 打印正确
    C. 语法错误
    D. 语法正确,不是死循环但也不能正确打印
    E. 死循环
    for(int i=0;i <= 10){
            System.out.println(i);
            i++;}
    
    4.下面的代码试图去打印1到10,如果有错误,指出来: (2分) [选择]
    A.
    B. 打印正确
    C. 语法错误
    D. 语法正确,不是死循环但也不能正确打印
    E. 死循环
    int i=1;for(;i <= 10;){    System.out.println(i);    i++;}
    
    5.下面的代码试图去打印1到10,如果有错误,指出来: (2分) [选择]
    A.
    B. 打印正确
    C. 语法错误
    D. 语法正确,不是死循环但也不能正确打印
    E. 死循环
    int i=1;for(;;){    System.out.println(i);    i++;}
    
    6.下面的代码试图去打印1到10,如果有错误,指出来: (2分) [选择]
    A.
    B. 打印正确
    C. 语法错误
    D. 语法正确,不是死循环但也不能正确打印
    E. 死循环
    int i=1;for(i=100;;i--){    System.out.println(i);}
    
    7.下面的代码试图去打印1到10,如果有错误,指出来: (2分) [选择]
    A.
    B. 打印正确
    C. 语法错误
    D. 语法正确,不是死循环但也不能正确打印
    E. 死循环
    for(int i=0;i <= 10;i++){    System.out.println(i);    i++;}
    
    8.下面的代码试图去打印1到10,如果有错误,指出来: (2分) [选择]
    A.
    B. 打印正确
    C. 语法错误
    D. 语法正确,不是死循环但也不能正确打印
    E. 死循环
    for(int i;i <= 10;i++){    System.out.println(i);}
    
  • 填空
    1.填空完成代码 (4分) [编程填空]
    下面的代码用for循环打印1到16,补齐代码使功能完善
    public static void main(String[]args){    for(        ){        System.out.println(i);    }}
    
    2.阅读代码 (2分) [填空]
    下面的代码会打印        
    3.阅读代码 (2分) [填空]
    下面的代码会打印