老师,我学的是假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);
}
AI 代码解读

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

0
AI 代码解读

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

解析
大家都知道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);
}
AI 代码解读

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

5
AI 代码解读

小朱: 老师,我对不起你,我觉得我学的是假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
AI 代码解读

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

目录
打赏
0
0
0
0
2
分享
相关文章
|
10月前
|
2023-3-25 java选择题每日一练
2023-3-25 java选择题每日一练
61 1
Java || 看了大二学长写的代码,我竟开始默默的模仿了。。。
Java || 看了大二学长写的代码,我竟开始默默的模仿了。。。
107 0
蓝桥杯快到了,Java的这些常用方法一定要知道
一年一度的蓝桥杯还有不到10天就到了,我们除了在算法方面要进行练习之外,对于一些基本的api也要熟记,因为这也是重点,是我们会用到的东西。
《备战蓝桥》之递归(Java)
本篇文章是针对acwing上的蓝桥杯课程所做的总结,有对应习题与练习,本篇文章主要针对递归常见的模型及对应例题的总结,算法的摩西其实不多,希望能与与大家共同学习,备战蓝桥
172 0
《备战蓝桥》之递归(Java)
java简单复习(杂)
      终于把基础的大致学的差不多了 不够的 不深的以后再来补。今天照着视频复习一遍,也算是个小总结 纯粹记录 到时候自己回头过来看看 不是干货 都是湿货。
1033 0
《备战蓝桥》之递推(Java)
本篇文章针对《备战蓝桥》的另一个题型展开讲解,递推,其实也就是利用循环来完成递归的效果,递归是大化小,而递推就是计算出每个小的,最后去算出大的,下边我们就来针对几道典型例题来一起感受递推。
132 0
《备战蓝桥》之递推(Java)
【牛客刷题】每日一题——初始Java语言练习
【牛客刷题】每日一题——初始Java语言练习
112 0
【牛客刷题】每日一题——初始Java语言练习
|
10月前
|
PTA帅到没朋友(Java语言)+测试点
PTA帅到没朋友(Java语言)+测试点
82 1
《备战蓝桥》之数组专练(Java)
近段时间将持续更新蓝桥真题并进行总结,希望准备蓝桥杯的小伙伴们可以一起加油,本篇文章为刷题记录,题目将持续更新,该部分为简单题型。
111 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等