磊哥工作十几年了,竟没有用过do-while!(文末送书)

简介: 磊哥工作十几年了,竟没有用过do-while!(文末送书)

最近在看 Java 的基础知识,其中有部分是关于循环的,在 Java 中,循环的语法总共分为 3 种:forwhiledo-while,如下图所示:

image.png

但我惊奇的发现,在之前的职业生涯中(11 年),竟从未用过 do-while(尴尬),于是问了群里的小伙伴,发现也是鲜有人用。

image.png

do-while 语法分析

我们先来了解一下 do-while 的语法:

do {
     // statements
} while (expression);

注意:最后一个分号不能省略,否则会提示编译出错

它的执行流程如下图所示:image.png

那它究竟在什么地方用呢?


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 的使用场景吗?欢迎评论区告诉我~


相关文章
|
7月前
|
缓存 分布式计算 算法
码农死磕这份Java高级开发文档,成功'挤'进一线大厂,这也太强了吧
拿到一份offer比什么都重要,所以笔者专门花了近一个月的时间整理好了一份专门为Java面试而生的总结,注意的是笔者仅仅对面试技术方面的题目进行的总结,至于如何去和面试官去聊,怎么聊,聊得嗨,这里笔者就不谈了,因为这方面并不是笔者擅长的。
|
7月前
|
数据采集 算法 Java
业余爱好者想入门编程,一定远离那些只会说No的家伙,尤其程序员
业余爱好者想入门编程,一定远离那些只会说No的家伙,尤其程序员
70 2
|
7月前
|
存储 缓存 Unix
同事跳槽阿里,临走甩给一份上千页的Linux源码笔记,真香
UNIX操作系统以简单、-致、优雅的设计著称,这种真正非凡的特性使得UNIX系统在超过1/4世纪的时间里影响了整个世界。而且,正是由于Linux的蓬勃发展,发源于UNIX的思想才依然活力依旧,并在可预见的未来其发展势头会一直持续下去。
|
Java 程序员
终于不慌内卷了,多亏阿里内部的并发图册+JDK源码速成笔记
并发编程 Java并发在近几年的面试里面可以说是面试热点,每个面试官面试的时候都会跟你扯一下并发,甚至是高并发。面试前你不仅得需要弄清楚的是什么是并发,还得搞清什么是高并发! 在这里很多小白朋友就会很疑惑:我工作又不用,为啥面试总是问?真就内卷卷我呗!(手动狗头)互联网内卷已经是现在的行业趋势,而且是不可逆的,这个大家也知道;但LZ要说的是,虽然简单地增删改查并不需要并发的知识,但是业务稍微复杂一点,你的技术水平稍微提升一点的话你就会知道,并发是我们Java程序员绕不开的一道坎。
52 0
|
人工智能 IDE 算法
【周末闲谈】新的编程方式,程序员的未来何在?
【周末闲谈】新的编程方式,程序员的未来何在?
134 0
不用费劲,这5款效率工具为你解决学习工作烦恼
今天我要向大家推荐5款超级好用的效率软件,无论是在学习还是办公中都能够极大地提高效率。这些软件可以帮助你解决许多问题,而且每个都是真正的神器。
155 0
不用费劲,这5款效率工具为你解决学习工作烦恼
|
监控 前端开发 jenkins
新来个技术总监,给团队引入了这款开发神器,同事直呼哇塞
带团队时间久了,就能发现整个 Team 都渐渐疲了。前两年老板还专门买了个系统搞 OKR,现在也不大提了;Scrum 我们也搞了,用起来也就那样;项目管理工具试了好几个,禅道、Worktile、现在用 Coding,反正有一个能用的就行;微服务化改造从去年开始在吭哧吭哧搞,我们自己搞得觉得很厉害,但业务部门那边就觉得没啥差别,搞不懂你们研发部门每天在弄些什么,赶紧做我们提的需求要紧。
新来个技术总监,给团队引入了这款开发神器,同事直呼哇塞
|
SQL 存储 Oracle
平时做开发需要掌握哪些数据库方面的知识(个人经验之谈)
平时做开发需要掌握哪些数据库方面的知识(个人经验之谈)
244 0
|
算法 NoSQL API
到底该不该看源码(懂这三点儿就够了)
1、不要为了看源码而看源码 2、代码积累到一定程度,遇到问题自然就去查源码了,然后你就看懂了 3、两年内不要刻意去看源码,可以点开简单了解一下就行,前两年疯狂做项目就行了,后期项目做的多了,你自己就会有疑问,每次写代码就会问自己为什么要这样写?底层的原理是什么?很自觉的带着问题就去看源码了,如果你没有这样的疑问,那说明你也不适合去看源码了,写写业务代码,了了一生
200 0
|
监控 前端开发
摸鱼搞了个掘金数据监控桌面应用,还不快用起来!
`小f`搞了个Electron桌面应用的开源项目,最近在找人给他提`PR`,然而我前天半夜摸鱼,正好逛github逛到他仓库了,突然发现,欸,好像可以嵌进去一个`掘金数据监控`的插件,于是,在我的不懈(~~努力~~)摸鱼下,它完成了~
下一篇
DataWorks