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 语句:适用于需要保证至少执行一次循环体的情况,条件检查是在循环体执行之后。

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

相关推荐
章豪Mrrey nical5 小时前
前后端分离工作详解Detailed Explanation of Frontend-Backend Separation Work
后端·前端框架·状态模式
派大鑫wink6 小时前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
程序员爱钓鱼6 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
xUxIAOrUIII7 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
PineappleCoder7 小时前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
Dolphin_Home7 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
zfj3217 小时前
go为什么设计成源码依赖,而不是二进制依赖
开发语言·后端·golang
weixin_462446237 小时前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
JIngJaneIL7 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码7 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web