zoukankan      html  css  js  c++  java
  • 一点思考|工作十几年了,竟从未用过do-while!

    最近在看 Java 的基础知识,其中有部分是关于循环的,在 Java 中,循环的语法总共分为 3 种: forwhiledo-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 的使用场景吗?欢迎评论区告诉我~

  • 相关阅读:
    这个帖子主要总结数据库备份方面的问题
    Visual C#.Net 网络程序开发Socket篇
    数据库设计说明书参考模板
    用Visual C#开发WinForm的应用程序
    在ASP.NET页中读取文本文件
    如何通过 SQL Server 链接服务器和分布式查询使用 Excel
    ER概念模型
    SQL Server 存储过程的分页方案比拼
    读出某一个目录的文件和文件夹
    Linux中的定时任务简单操作实例
  • 原文地址:https://www.cnblogs.com/vipstone/p/13622479.html
Copyright © 2011-2022 走看看