zoukankan      html  css  js  c++  java
  • 不要默认类型转换

    看下面一段层序:

    public class TransTest {
     private final static int SPEED_LIGHT=30*10000*1000;
     public static void main(String[] args){ 
     long dis1=SPEED_LIGHT*8*60;
     System.out.println(dis1);
     }
    }

    输出结果是:

    -2028888064

    竟然是负值,分析原因是dis1的乘子都是int类型,已经越界了,解决办法很简答,利用151个建议的方法,用主动声明式类型转换。

    修改如下:

    public class TransTest {
     private final static int SPEED_LIGHT=30*10000*1000;
     public static void main(String[] args){ 
     long dis1=1L*SPEED_LIGHT*8*60;
     System.out.println(dis1);
     }
    }

    仅仅添加了一个1L,这里L大写是遵循了151个的一个建议,避免l和1无法辨认。

    输出结果:

    144000000000

    结论:在进行计算时,特别是左右两边类型不一致时,要仔细分析输出的类型,有时候即使强制类型转换也不行,因为JAVA是在先进行运算,然后进行类型转换的,必须保证运算时不越界。

  • 相关阅读:
    计数排序【代码】
    快速排序【代码】
    基于最大堆实现最大优先队列
    Spring入门(1)
    AJAX初步理解
    选择器
    Hibernate的映射
    Hibernate配置(2)
    查看mysql的安装路径
    Hibernate入门(1)
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/3020980.html
Copyright © 2011-2022 走看看