磊哥工作十几年了,竟没有用过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 的使用場景嗎?歡迎評論區告訴我~
文末福利:送書
最后送兩本朋友新出的書,作者親筆簽名版哦,包郵到家!
第一本:《Web全棧項目開發入門與實戰》
本書是手把手地教開發者如何開發一套全棧的 WEB 項目,項目的內容是一個類似閑魚的二手交易平臺,其中包含前端技術(主要使用 React 框架)和后端技術(主要使用Spring Boot 框架)。
第二本:《Spring Boot技術內幕:架構設計與實現原理》
關注此公眾號,發送“送書”參與抽獎活動哦~
往期推薦調研了100+開源博客,發現這5個最好用!
多圖證明,Java到底是值傳遞還是引用傳遞?
阿里為什么推薦使用LongAdder,而不是volatile?
關注下方二維碼,收獲更多干貨!
總結
以上是生活随笔為你收集整理的磊哥工作十几年了,竟没有用过do-while!(文末送书)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最简单的6种防止数据重复提交的方法!(干
- 下一篇: 第 6-6 课:消息队列面试题汇总