34. Java 控制流语句 While 和 Do-While 语句

34. Java 控制流语句 While 和 Do-While 语句

在 Java 中,whiledo-while 都是用于执行循环的结构。它们的主要区别在于条件判断的时机,while 循环在循环开始前检查条件,而 do-while 循环则是在每次循环后检查条件,因此,do-while 至少会执行一次循环体。👇


1. While 语句

while 语句用于在给定的条件为 true 时重复执行代码块。每次进入循环前,都会检查条件,如果条件为 true,则继续执行循环体;如果为 false,则退出循环。

基本语法:
java 复制代码
while (condition) {
    // 执行的语句
}
  • condition :布尔表达式,返回 truefalse
  • 如果条件为 true,循环体会执行;如果为 false,则退出循环。
示例:打印 1 到 10 的值
java 复制代码
class WhileDemo {
    public static void main(String[] args) {
        int count = 1;
        while (count < 11) {
            System.out.println("Count is: " + count);
            count++;
        }
    }
}
程序输出:
java 复制代码
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10
解释:
  • count 从 1 开始,每次循环打印 count 并递增。
  • count 达到 11 时,条件 count < 11false,循环结束。
无限循环:

如果条件始终为 true,则会形成 无限循环

java 复制代码
while (true) {
    // 无止境的循环
}

2. Do-While 语句

do-while 语句与 while 语句类似,区别在于条件检查的时机。do-while 循环总是先执行一次循环体代码,然后再检查条件。因此,do-while 循环至少会执行一次循环体。

基本语法:
java 复制代码
do {
    // 执行的语句
} while (condition);
  • condition :循环结束前检查的条件表达式。如果条件为 true,则继续执行;如果为 false,则退出循环。
示例:打印 1 到 10 的值
java 复制代码
class DoWhileDemo {
    public static void main(String[] args) {
        int count = 1;
        do {
            System.out.println("Count is: " + count);
            count++;
        } while (count < 11);
    }
}
程序输出:
java 复制代码
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10
解释:
  • 即使 count 初始值为 1do 语句中的代码仍然会先执行一次。
  • 每次执行后检查条件 count < 11,直到 count 达到 11 时退出循环。

3. 主要区别:While 和 Do-While
  • while 语句 :在每次循环之前先检查条件,只有条件为 true 时才执行循环体。
  • do-while 语句 :先执行一次循环体代码,再检查条件。因此,无论条件如何,do-while 至少执行一次循环体。

📝 总结

  • while 语句:适用于需要在循环开始前验证条件的情况,只有条件成立时才执行循环体。
  • do-while 语句:适用于需要保证至少执行一次循环体的情况,条件检查是在循环体执行之后。

通过理解这两者的区别,我们可以根据具体需求选择最合适的循环结构,以提高代码的可读性和效率。💡

相关推荐
盛夏绽放3 小时前
jQuery 知识点复习总览
前端·javascript·jquery
hui函数4 小时前
Flask电影投票系统全解析
后端·python·flask
胡gh5 小时前
依旧性能优化,如何在浅比较上做文章,memo 满天飞,谁在裸奔?
前端·react.js·面试
大怪v5 小时前
超赞👍!优秀前端佬的电子布洛芬技术网站!
前端·javascript·vue.js
胡gh5 小时前
你一般用哪些状态管理库?别担心,Zustand和Redux就能说个10分钟
前端·面试·node.js
小厂永远得不到的男人5 小时前
基于 Spring Validation 实现全局参数校验异常处理
java·后端·架构
roamingcode7 小时前
Claude Code NPM 包发布命令
前端·npm·node.js·claude·自定义指令·claude code
码哥DFS7 小时前
NPM模块化总结
前端·javascript
灵感__idea7 小时前
JavaScript高级程序设计(第5版):代码整洁之道
前端·javascript·程序员
唐璜Taro7 小时前
electron进程间通信-IPC通信注册机制
前端·javascript·electron