zoukankan      html  css  js  c++  java
  • 基础不稳引起的bug

      

    1     public static void main(String[] args) {
    2         Integer limitDay  = 1;
    3         long dayMillisecond =  1*24*60*60*1000*24*100;
    4         System.out.println(dayMillisecond);//输出 1201569792
    5         long  longSecond= limitDay.longValue()*24*60*60*1000*24*100;
    6         System.out.println(longSecond);// 输出 207360000000
    7 
    8     }

      由上面的输出结果,初看好像毁三观,但细细想还是能寻到缘由的。需要确认的是 上述代码第三行中的 dayMillisecond 虽然是用long来接收的,但其值却是不会超过int的取值范围的,因为等号右边都是int 与int之间的计算,最终的结果也是int,而第五行是int 与long之间的计算,最终的结果当然是long了。那么为什么结果相差100倍呢?大家都知道int 的存值返回约为 -21亿到21亿,由上面的计算字面量可知 大概是2000多亿,int在多次数据的溢出得到的结果正好是1201569792,这也就解释上面的输出结果。

      有时候我们写程序时,特别是线上程序往往bug就是由于一个小点引起的,上面的问题也曾引得我花大量的时间的改bug,这种问题往往是想不到的,因为自己有意识的忽略它们,觉得问题不应该会出现在这段代码,总之一定要重视基础,不要好高骛远。

  • 相关阅读:
    【】Libevent源码解析
    sftp使用
    世界boss设计
    记一次薪酬谈判的教训 .
    一些常用的文件操作代码
    一位总经理的辞职信,以及回复
    JMeter安装、文档参考
    Charles——charles代理菜单proxy总结——external proxy 外部代理设置
    JDK安装
    Charles——charles常用功能——重定向
  • 原文地址:https://www.cnblogs.com/tjqBlog/p/9403936.html
Copyright © 2011-2022 走看看