重学Java-第九章 Java循环语句

为什么要使用循环语句,例如要在控制台打印1到5,那么就是

System.out.println("1");

System.out.println("2");

...

这样就会存在以下问题:

· 不灵活:需求变更就需要逐行修改

· 难以维护:容易产生bug

· 伸缩性差:需要写大量代码

这时就需要循环语句来救场了。

9.1 while

9.1.1 语法

​ while循环是最简单的循环形式,其结构如下:

while (条件) {
    // 循环体,条件成立时执行
    ...
}
// 循环完成后执行

9.1.2 实例

// 控制台打印从1到5
public class WhileLoop1 {
    public static void main(String args[]) {
        int i = 1;
        while (i <= 5) {
            System.out.println(i); // 打印i
            i ++; // i自增1
        }
    }
}

​ 使用循环语句时,需要有一个变量来控制循环语句块的执行,例如上述实例的变量i,每次执行完打印语句后,i都自增1,当满足i <= 5 条件时,就结束循环语句块的执行。若没有i ++; 那么i的值永远都是1,执行循环语句块的条件永远满足,控制台就会一直打印,直到将资源耗尽才会停止,这就是所谓的死循环

9.2 do while

9.2.1 语法

​ do while循环的功能和while循环类似,不同点在于:while循环先判断条件,在执行循环体;而do while循环则是先执行循环体,再判断条件,如果条件成立继续执行循环,条件不成立则终止循环。总结就是:无论条件是否成立,do while循环都会执行一次,而while循环可能一次都不执行

​ do while语法结构如下:

do {
    // 循环体
} while (条件);

9.2.2 实例

// 实现1到100的累加求和
public class DoWhileLoop {
    public static void main(String[] args) {
        int sum = 0; // 累加和
        int i = 1;
        do {
            sum = sum + i; // 使sum和i相加,并将值再次赋值给sum
            i ++; // i自增1
        } while (i <= 100);
        System.out.println("1到100的累加和为:" + sum);
    }
}

9.3 for循环

9.3.1 语法

​ for循环是一种特殊的while循环,它使用计数器来实现循环,是使用最广泛的循环语句。在关键字for后的括号中,有三条语句,第一条=语句是声明变量语句,允许声明一个或多个整型变量;第二条语句是条件,条件的检测方式与while循环相同(每次循环开始前判断条件是否成立);第三条语句是迭代语句,通常是变量递增或递减语句。其语法结构如下:

for (变量声明; 条件; 迭代语句) {
    // 循环体
}

9.3.2 实例

// for循环实现1到100的累加求和
public class ForLoop {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 0; i <= 100; i++) {
            sum += i;
        }
        System.out.println("sum = " + sum);
    }
}

​ 在执行循环体前,先执行for括号中的变量声明语句,int i = 0; 定义了一个计数器变量i并赋值为0(在整个循环中只执行一次)。之后会进行条件判断i <= 100,显然条件成立,执行循环体sum += i;即 sum = sum + i, 循环体执行完之后执行括号的第三条语句i++,此时第一次循环结束。再次判断条件i <= 100是否成立,继续执行循环体,执行i++。直到i自增为101,此时不满足条件,不执行循环体,循环结束。

9.4 for each循环

​ for each主要用于数组和集合的遍历,将会在Java数组章节中讲解。

9.5 break和continue关键字

​ 可以使用break和continue语句来重定向执行流。

9.5.1 break

​ break关键字可以出现在一个循环语句中,用以跳出当前循环。实例如下:

public class BreakKeywords {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i ++) {
            if(i == 3) { // 条件语句
                System.out.println("当i等于3时,终止循环!");
                break;
            }
            System.out.println(i);
        }
    }
}

​ 在多层循环中,break语句只能终止自己所在的那一层循环,不会影响到外层循环。

public class BreakKeywords2 {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i ++) {
            // 打印i的值
            System.out.println(i);
            for (int j = 1; j<=5; j ++) {
                if(j == 3) { // 条件语句
                    System.out.println("当j等于3时,终止循环!");
                    break;
                }
                // 打印j的值
                System.out.println(j);
            }
        }
    }
}

9.5.2 continue

​ continue关键字可以跳出当次循环,继续执行下一次循环。实例如下:

public class ContinueKeywords {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i ++) {
            if(i == 3) {
                System.out.println("当i等于3时,跳过~");
                continue;
            }
            System.out.println(i);
        }
    }
}

// 运行结果
1
2
当i等于3时,跳过~
4
5

​ 当i==3时,满足if语句的条件,执行了打印跳过语句和continue语句,结束了当次循环,所以没有执行 System.out.println(i); 然后继续执行下一次循环,输出4和5。

posted @ 2023-02-15 13:47  XQ-Yang  阅读(9)  评论(0编辑  收藏  举报