老师,我学的是假java吗?╥﹏╥...

简介: 老师,我学的是假java吗?╥﹏╥...

i = i++;我这么写怎么了?没事,下一位。

我: 我命由我不由天。
面试官: 好的,下一位。

不扯哪些没用的,我们来说说今天有哪些题目让你怀疑人生。

题目一 永远长不大的i

public static void main(String[] args) {
    int i = 0;
    for (int j = 0; j < 100; j++) {
        i = i++;
    }
    System.out.println(i);
}

小朱: (这家公司问这种问题太瞧不起我了吧。这个程序肯定打印100。毕竟,它对i做了100次增量操作。)100,循环了一百次做加法。
面试官: 结果不对,再给你个机会。
小朱: 不可能啊,那一定是99或100。
面试官: 都不对,回家等通知吧。
回到家小朱打开电脑,把代码写了一边,然后跑了一下,瞬间蒙了。

0

小朱: 我是不是该回炉重造。

解析
大家都知道i++是先赋值在++,但是用到的时候,就会忘记,还是用的少。其实每次都等于++前的值,所以一直被赋值为0,所以再多操作也是没用的。之前的文章就写过关于i++和++i的知识,各位是不是没有仔细去看。我每次都是觉得没问题,怎么会有bug,但是当翻看日志才发现自己是多么没用心。

题目二 idea有问题

public static void main(String[] args) {
    //一天的毫秒数(肯定超过int的大小了,所以用long)
    long millisecond = 24 * 60 * 60 * 1000;
    //一天的纳秒数(肯定超过int的大小了,所以用long)
    long nanosecond = 24 * 60 * 60 * 1000 * 1000;
    //求纳秒和毫秒的转换
    System.out.println(nanosecond/millisecond);
}

小朱: (上家公司是我一时大意,这次我要仔细看看,但是这个题有必要问吗?肯定1000啊,现在面试官是不是不会java,还是面试官是人事,算了。)1000,两个公式就相差1000,小学生都能看出来。
面试官: 哦,是吗,但是结果好像不是啊,你在想想。
小朱: (这在玩我吗?不是1000是多少?开溜吧。)额,对不起我肚子吃坏了好像,我想去个厕所。
回到家小朱打开电脑,又把代码写了一边,然后跑了一下,然后开始怀疑人生了。

5

小朱: 老师,我对不起你,我觉得我学的是假java。

解析
这个其实很简单,之前讲过int i = 2147483647; i + 1;的结果是-2147483648也就是说它越界了,你会说他不是用long接收的吗?但是在计算的时候是int,计算完成后才转成的long,所以他越界了也就是说long nanosecond = 24 * 60 * 60 * 1000 * 1000;这个的结果和你想想的不一样。其实结果是500654080。所以得到最终结果是5

解决办法

public static void main(String[] args) {
    //一天的毫秒数(肯定超过int的大小了,所以用long)
    long millisecond = 24L * 60 * 60 * 1000;
    //一天的纳秒数(肯定超过int的大小了,所以用long)
    long nanosecond = 24L * 60 * 60 * 1000 * 1000;
    //求纳秒和毫秒的转换
    System.out.println(nanosecond/millisecond);
}
//结果
1000

这个就不用我解释了吧。这两道题说投机取巧,也不算,毕竟工作会用到,你反复看代码都找不到问题,这个坑一定要记住,否者永远找不大bug所在。拿着这个题目去靠靠你的小伙伴,看看他们是不是全军覆没。

相关文章
|
存储 编解码 算法
深度探索:使用FFmpeg实现视频Logo的添加与移除(二)
深度探索:使用FFmpeg实现视频Logo的添加与移除
539 0
|
编解码 Linux 数据安全/隐私保护
深度探索:使用FFmpeg实现视频Logo的添加与移除(一)
深度探索:使用FFmpeg实现视频Logo的添加与移除
464 0
|
存储 人工智能 安全
三个故事方法:使用 ChatGPT 编辑你的场景(全)
三个故事方法:使用 ChatGPT 编辑你的场景(全)
357 0
|
API 语音技术 vr&ar
基于Python3(Autosub)以及Ffmpeg配合GoogleTranslation(谷歌翻译)为你的影片实现双语版字幕(逐字稿)
为影片加字幕其实是一件非常耗费时间的事情,尤其是对于打字慢的朋友来说。当然不光为影片加字幕,在其他领域,类似的逐字稿也是工作中避免不了的内容。比如写论文,如果内容中有访谈,就必须要附上逐字稿,又或者是会议的记录等等。本次使用基于Python3的AutoSub库对实时语音进行识别,然后再通过GoogleTranslation的在线API接口对语音识别后的内容进行翻译,这样就可以得到一份双语字幕(逐字稿),这里的双语不只针对国语+英语组合,也可以包含其他国家,包括小语种地区,非常方便。
基于Python3(Autosub)以及Ffmpeg配合GoogleTranslation(谷歌翻译)为你的影片实现双语版字幕(逐字稿)
|
安全 开发工具 数据安全/隐私保护
MacOS安装FFmpeg
MacOS安装FFmpeg
9973 0
|
9天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1198 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1135 87
|
7天前
|
机器学习/深度学习 物联网
Wan2.2再次开源数字人:Animate-14B!一键实现电影角色替换和动作驱动
今天,通义万相的视频生成模型又又又开源了!Wan2.2系列模型家族新增数字人成员Wan2.2-Animate-14B。
585 11

热门文章

最新文章