杰瑞科技汇

java while do 循环

while 循环

while 循环是先判断,后执行的循环,在每次循环开始之前,它会先检查布尔表达式的值,如果表达式为 true,则执行循环体;如果为 false,则跳过整个循环,继续执行循环体后面的代码。

java while do 循环-图1
(图片来源网络,侵删)

语法结构

while (布尔表达式) {
    // 循环体
    // 当布尔表达式为 true 时,要重复执行的代码
}

执行流程

  1. 计算 while 后面的布尔表达式。
  2. 如果表达式结果为 true
    • 执行 while 循环大括号 内的代码块(循环体)。
    • 执行完循环体后,返回第 1 步,再次判断布尔表达式。
  3. 如果表达式结果为 false
    • 跳过 while 循环,继续执行循环体后面的代码。

特点

  • 入口条件判断:循环体可能一次都不会被执行,因为条件在执行前就进行判断。
  • 适用于在不确定循环次数,但知道循环开始条件的情况下使用。

示例

示例 1:经典的计数器

public class WhileLoopExample {
    public static void main(String[] args) {
        int count = 1; // 初始化计数器
        System.out.println("--- while 循环开始 ---");
        while (count <= 5) { // 循环条件:只要 count 小于等于 5
            System.out.println("当前计数: " + count);
            count++; // 重要:更新计数器,否则会变成死循环
        }
        System.out.println("--- while 循环结束 ---");
        System.out.println("循环结束后的 count 值: " + count);
    }
}

输出结果:

--- while 循环开始 ---
当前计数: 1
当前计数: 2
当前计数: 3
当前计数: 4
当前计数: 5
--- while 循环结束 ---
循环结束后的 count 值: 6

示例 2:循环体一次都不执行

public class WhileLoopNotExecuted {
    public static void main(String[] args) {
        int number = 10;
        // 条件从一开始就是 false
        while (number < 5) {
            System.out.println("这行代码不会打印出来。");
            number++;
        }
        System.out.println("因为条件不满足,所以直接跳过了 while 循环。");
    }
}

do-while 循环

do-while 循环是先执行,后判断的循环,它会无条件地执行一次循环体,然后再检查布尔表达式的值,如果表达式为 true,则继续循环;如果为 false,则结束循环。

java while do 循环-图2
(图片来源网络,侵删)

语法结构

do {
    // 循环体
    // 至少会执行一次的代码
} while (布尔表达式); // 注意:这里的分号 ; 不能省略!

执行流程

  1. 无条件执行 do 后面大括号 内的代码块(循环体)。
  2. 执行完循环体后,计算 while 后面的布尔表达式。
  3. 如果表达式结果为 true

    返回第 1 步,再次执行循环体。

  4. 如果表达式结果为 false
    • 结束 do-while 循环,继续执行循环体后面的代码。

特点

  • 出口条件判断:循环体至少会执行一次,无论初始条件是否满足。
  • 适用于需要先执行一次操作,然后再根据条件判断是否继续重复的场景。

示例

示例 1:经典的计数器

public class DoWhileLoopExample {
    public static void main(String[] args) {
        int count = 1; // 初始化计数器
        System.out.println("--- do-while 循环开始 ---");
        do {
            System.out.println("当前计数: " + count);
            count++; // 更新计数器
        } while (count <= 5); // 循环条件
        System.out.println("--- do-while 循环结束 ---");
        System.out.println("循环结束后的 count 值: " + count);
    }
}

输出结果:

--- do-while 循环开始 ---
当前计数: 1
当前计数: 2
当前计数: 3
当前计数: 4
当前计数: 5
--- do-while 循环结束 ---
循环结束后的 count 值: 6

示例 2:循环体至少执行一次

java while do 循环-图3
(图片来源网络,侵删)
public class DoWhileAlwaysExecuted {
    public static void main(String[] args) {
        int number = 10;
        // 条件从一开始就是 false
        do {
            System.out.println("这行代码依然会打印出来,因为 do-while 至少执行一次。");
            number++;
        } while (number < 5); // 循环条件不满足,但循环已经执行过了
        System.out.println("循环结束后的 number 值: " + number);
    }
}

输出结果:

这行代码依然会打印出来,因为 do-while 至少执行一次。
循环结束后的 number 值: 11

whiledo-while 的核心区别

特性 while 循环 do-while 循环
执行顺序 先判断,后执行 先执行,后判断
执行次数 循环体可能执行 0 次 循环体至少执行 1 次
语法 while (condition) { ... } do { ... } while (condition);
适用场景 当循环的前提条件不满足时,不应该执行任何操作。 当循环的操作需要至少执行一次,然后再决定是否继续。

循环中的常见问题:死循环

死循环是指一个循环的终止条件永远无法达到,导致程序无限循环下去,无法继续执行后面的代码。

while 死循环示例

// 这是一个死循环!
int i = 1;
while (i <= 10) {
    System.out.println("Hello");
    // 忘记了 i++,i 的值永远是 1,条件永远为 true
}

如何避免死循环

  1. 确保循环变量被正确更新:在循环体内,必须有能够改变布尔表达式结果的代码,最常见的就是计数器的递增/递减(如 i++, count--)。
  2. 确保循环有明确的出口:布尔表达式最终必须有变为 false 的可能性。

for 循环的简单对比

Java 中还有一种非常常用的循环——for 循环。for 循环通常用于当你确切地知道循环需要执行多少次时。

// for 循环语法
for (初始化; 布尔表达式; 更新) {
    // 循环体
}
// 示例:从 1 打印到 5
for (int i = 1; i <= 5; i++) {
    System.out.println("当前 i 的值: " + i);
}

for 循环 vs while 循环:

  • for 循环:将初始化、条件判断、变量更新这三个部分都放在一行代码中,结构更紧凑,适合用于固定次数的循环。
  • while 循环:结构更灵活,循环变量的初始化可以在循环外,循环条件的判断逻辑可以更复杂,适合用于循环次数不确定的场景。

循环类型 何时使用
while 当你需要在循环开始前检查一个条件,并且这个条件可能从一开始就不满足(即循环体可能一次都不执行)。
do-while 当你需要确保循环体中的代码至少执行一次,然后再根据条件判断是否继续。
for 当你确切地知道循环需要执行的次数,或者希望将循环的控制(初始化、条件、更新)集中在一起时。

理解这三种循环的区别和适用场景,是掌握 Java 流程控制的关键一步。

分享:
扫描分享到社交APP
上一篇
下一篇