一点思考|工作十几年了,竟从未用过do-while!
最近在看 Java 的基础知识,其中有部分是关于循环的,在 Java 中,循环的语法总共分为 3 种: for
、 while
、 do-while
,如下图所示:
但我惊奇的发现,在之前的职业生涯中(11 年),竟从未用过 do-while
(尴尬),于是问了群里的小伙伴,发现也是鲜有人用。
do-while 语法分析
我们先来了解一下 do-while 的语法:
do {
// statements
} while (expression);
注意:最后一个冒号不能省略,否则会提示编译出错。
它的执行流程如下图所示:
那它究竟在什么地方用呢?
do-while 使用场景
在我多次的搜索和请教下,终于找到了两个相对满意的使用场景,接下来一起来看。
使用场景一:抢票
对于抢票业务来说,无论三七二十一,先抢了再说,然后在判断是否抢票成功,如果抢票成功则退出循环,否则继续执行抢票,实现的伪代码如下所示:
do {
// 抢票代码...
} while (没抢到票);
思路提供者:贾总
使用场景二:进制转换
经过大量搜索发现,在 JDK 的源码中,也存在少量使用 do-while
的场景,比如 Integer
中进制转换,相关源码如下:
static int formatUnsignedInt(int val, int shift, char[] buf, int offset, int len) {
int charPos = len;
int radix = 1 << shift;
int mask = radix - 1;
do {
buf[offset + --charPos] = Integer.digits[val & mask];
val >>>= shift;
} while (val != 0 && charPos > 0);
return charPos;
}
比如十进制转二进制就会执行此方法,在进制转换的业务中,无论任何情况,一定会至少执行一次进制转换的,因此这种业务场景就非常适合 do-while
。
总结
孔子说:温故而知新。当我们学完很多知识之后,回过头来再琢磨这些知识,发现很有趣,这就是知识的一大乐趣吧。本文我们介绍了两种 do-while
的使用场景,抢票和进制转换,你还知道哪些 do-while
的使用场景吗?欢迎评论区告诉我~
关注下面二维码,订阅更多精彩内容。

标签:
java
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
2017-09-06 Xamarin截取/删除emoji表情bug解决方案
2017-09-06 Xamarin使用ListView开启分组视图Cell数据展示bug处理