when和while的区别
来源: 作者:王教员 发布时间:2026-01-20 08:18:32 点击量:27
编程中 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 管 “条件匹配”,二者无直接替代关系。
最新教员
李老师【机构家教】

擅长:雅思
毕业于新西兰怀卡托大学 本硕连读
2011-2019 年 7年多海外经历
2019 -2022前新东方英语老师 因为双减政策离职
主带:高中;雅思
擅长:高考提分;对于高考内容和做题套路非常熟悉,所带过的学生大多提分显著,只要态度没有问题,成绩大多可以获得突破。
最强战绩:2021年体育高考生,21天时间 从平时的40分达到高考的93分。
肖老师【大学生家教】

擅长:高三英语
为人真诚谦和,做事踏实负责。
关于教学能力 |
基础知识牢固,擅长方法技巧。教学严谨细心,善于因材施教。
数学长跑优胜者,基础稳固,能打题型;英语非常优异,语法阅读写作口语样样行,作文稳定23(满分25),高考听说14(满分15)。
1.带雅思听说读写,针对学员具体情况给出学习方案并督促。
2.帶香港學生數學,答疑解惑,並響應地複習知識點。
3.带5个小学霸,打CSSC剑桥英语辩论赛。
4.带数学、英语,从高一带至高二,树立数学信心,打牢基础,传授技巧,将学员数学成绩从70分拔高稳定至1
胡老师【大学生家教】

擅长:初三英语
我是首都师范大学英语师范专业的本硕连读学生。我对英语以及史地政三大文科有着浓厚的兴趣,未来想成为一名优秀教师。我初中的时候担任英语课代表,高中担任政治课代表,高考英语132,文综243,其中政治88 ,考研也顺利超过本校录取分数线15分。对于英语和史地政三大文科有着自己的一套独特的学习方法。以前在北京市第三十五中学实习,教初二英语,史地政三科也曾有过相关一对一家教的经历。
2018.9~2019.1,辅导高三学生英语,成绩从90分左右提高到120分以上。2019.3~2020.6,辅导初三学生政治,最终