时间:2026-01-20 08:18:32
编程中 when 和 while 这两个关键字的核心区别,这是新手入门时很容易混淆的知识点,从定义、用法和场景三个维度帮你讲清楚。
一、核心定义与适用语言
首先要明确:
while 是通用循环关键字,几乎所有主流编程语言(Python/Java/C++/JavaScript 等)都支持,核心作用是 “当满足条件时,重复执行一段代码”。
when 并非通用关键字,仅在部分语言(如 Kotlin/Scala)中作为条件分支 / 模式匹配关键字(类似其他语言的 switch/case),少数语言中也可能作为 while 的变体(如 SQL 中的 WHEN 用于 CASE 语句),不存在 “when 循环” 的通用用法。
二、具体用法对比
1. while:循环关键字(通用)
while 的核心是循环执行,语法结构是 “条件判断 + 循环体”,只要条件为 True(真),就会反复执行循环体代码。
示例(Python):
python
运行
# 用while循环打印1-3
count = 1
# 条件:count <= 3 时,执行循环体
while count <= 3:
print(count)
count += 1 # 必须修改条件变量,否则会无限循环
输出:
plaintext
关键特点:
先判断条件,再执行循环体(条件不满足时,循环体一次都不执行);
必须在循环体内修改条件变量(如 count += 1),否则会陷入无限循环。
2. when:条件分支关键字(Kotlin 为例)
when 在 Kotlin 中替代了 switch/case,核心是多条件匹配,用于根据不同的值执行不同的逻辑,不涉及循环。
示例(Kotlin):
kotlin
fun getGrade(score: Int): String {
// 用when匹配不同分数区间,返回对应等级
return when (score) {
in 90..100 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "D" // 相当于switch的default
}
}
fun main() {
println(getGrade(85)) // 输出:B
}
补充:SQL 中的 WHEN 也用于条件分支(如 CASE WHEN ... THEN ... END),和循环无关:
sql
-- SQL中WHEN的用法
SELECT name,
CASE WHEN score >= 60 THEN '及格' ELSE '不及格' END AS result
FROM students;
三、易混点:do-while vs when
有些新手会把 do-while(另一种循环)和 when 混淆,这里补充对比:
关键字 作用 执行逻辑 适用场景
while 条件循环 先判断条件,再执行 不确定循环次数,需先验证条件
do-while 条件循环(变体) 先执行一次,再判断条件 至少需要执行一次的循环
when 多条件分支 / 模式匹配 匹配值后执行对应逻辑 替代繁琐的 if-else 分支
总结
while 是通用循环关键字,核心是 “满足条件时重复执行代码”,所有主流语言都支持;
when 是条件分支关键字(仅 Kotlin/Scala 等少数语言),核心是 “匹配值执行对应逻辑”,和循环无关;
记忆关键点:while 管 “循环重复”,when 管 “条件匹配”,二者无直接替代关系。