老师,我学的是假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所在。拿着这个题目去靠靠你的小伙伴,看看他们是不是全军覆没。

相关文章
|
8月前
|
Java
【java】小学生数学练习题目生成系统
小学生数学练习题目生成系统
|
8月前
|
安全 Java 数据库连接
【Java每日一题】——第三十三题:思考应用题
【Java每日一题】——第三十三题:思考应用题
|
8月前
|
安全 Java C++
2023-3-25 java选择题每日一练
2023-3-25 java选择题每日一练
53 1
|
8月前
|
Java 程序员 数据安全/隐私保护
Java中的异常语法知识居然这么好玩!后悔没有早点学习
Java中的异常语法知识居然这么好玩!后悔没有早点学习
74 1
|
8月前
|
Java
Java期末考试编程题复习
Java期末考试编程题复习
|
8月前
|
安全 Java 数据库连接
【Java每日一题】第三十七题:思考应用题
【Java每日一题】第三十七题:思考应用题
|
Java Spring
Java || 看了大二学长写的代码,我竟开始默默的模仿了。。。
Java || 看了大二学长写的代码,我竟开始默默的模仿了。。。
102 0
|
Java
java学习第五天笔记-方法使用120-求数组最大值
java学习第五天笔记-方法使用120-求数组最大值
79 0
java学习第五天笔记-方法使用120-求数组最大值
|
存储 算法 Java
|
Java 开发工具 git
这道Java基础题真的有坑!我也没想到还有续集。 (3)
这道Java基础题真的有坑!我也没想到还有续集。 (3)
95 0
这道Java基础题真的有坑!我也没想到还有续集。 (3)