一、分析 

在Java运算中的类型转换,是先运算在进行类型转换的。具体场景如下。

二、场景 

在如下程序中:

public class Client{ public static final int LIGHT_SPEED = 30 * 10000 * 1000; public static void main(String[] args){ System.out.println("月亮照射到地球需要1秒,计算月亮到地球的距离。"); long dis1 = LIGHT_SPEED * 1; System.out.println("月亮与地球的距离是:" + dis1 + "米"); System.out.println("----------------------------------------------------"); System.out.println("太阳照射到地球上需要8分钟,计算太阳到地球的距离。"); //可能超出整数范围,使用long型 long dis2 = LIGHT_SPEED * 60 * 8; System.out.println("太阳与地球的距离是:" + dis2 + "米"); }
} 

运行结果是:

月亮照射到地球需要1秒,计算月亮到地球的距离。

月亮与地球的距离是:300000000米

----------------------------------------------------

太阳照射到地球上需要8分钟,计算太阳到地球的距离

太阳与地球的距离是:-2028888064米

太阳和地球的距离竟然是负的!那是因为Java是运算然后再进行类型的转换,具体地说是因为dis2的三个运算参数都是int类型,三者相乘的结果虽然也是int类型,但是已经超过了int的最大值,所以其值就是负值了,在转换成long型,结果是负值。

解决办法,只要加个L即可,如下:

long dis2 = LIGHT_SPEED * 60 L * 8;

60L是long型,乘出来的结果也是long型,在还没有超过int类型的范围时就已经转换成long型了。

三、建议 

在实际开发中,基本类型的转换时,通用的做法是主动声明式类型转换(注意不是强制类型转换)。代码如下:

long dis2 = 1L * LIGHT_SPEED * 60 * 8;

新技术,新未来!欢迎大家关注“1024工场”微信服务号,时刻关注我们的最新的技术讯息!(甭客气!尽情的扫描或者长按!)

提高你的Java代码质量吧:不要让类型默默转换相关推荐

  1. 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式

    一.分析  字符串的操作,诸如追加.合并.替换.倒序.分隔等,都是在编码过程中经常用到的,而且Java也提供了append.replace.reverse.split等方法来完成这些操作,它们使用起来 ...

  2. 提高你的Java代码质量吧:少用静态导入

    一.分析  从Java 5开始引入静态导入语法(import static),其目的是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序. 但是,滥用静态导入会使程序更难阅读,更难维护.静态导 ...

  3. 提高你的Java代码质量吧:如果有必要,使用变长数组吧

    一.分析  Java中的数组是定长的,一旦经过初始化声明就不可改变长度,这在实际使用中非常不方便. 二.场景  比如要对班级学生的信息进行统计,因为我们不知道一个班级会有多少学生(随时都有可能会有学生 ...

  4. 提高你的Java代码质量吧:使用valueof前必须进行校验

    一.分析 每个枚举都是java.lang.Enum的子类,都可以访问Enum类提供的方法,比如hashCode.name.valueOf等,其中valueOf方法会把一个String类型的名称转变成枚 ...

  5. 提高你的Java代码质量吧:不要随便设置随机种子

    一.分析 在加密.混淆数据等地方,我们经常期望获得一个唯一的.不可仿造的数字,以避免产生相同的业务数据造成混乱. 在Java项目中,通常是通过Math.random方法和Random类类获得随机数的. ...

  6. 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择

    一.分析  对于一个字符串进行拼接有三种方法:加号.concat方法.及StringBuiler或StringBuffer. 1."+"方法拼接字符串  str += " ...

  7. 提高 Java 代码质量

    高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况.那么我们又该如何实践呢?本专题汇集了大量来自代码质量专家们的专业经验.最佳 ...

  8. java 代码解析工具_改善 Java 代码质量的工具与方法

    原标题:改善 Java 代码质量的工具与方法 我们可能见过上面的有关代码质量的图片,究竟如何衡量一段代码好坏? 代码质量是什么?为什么它很重要? 作家通过他的著作来讲述了一个清晰的.令人信服的故事.他 ...

  9. 从 FingBugs的错误来看JAVA代码质量

    从 FingBugs的错误来看JAVA代码质量(一)http://scholers.iteye.com/blog/1107452 从 FingBugs的错误来看JAVA代码质量(二)http://sc ...

最新文章

  1. Python3 集合set
  2. Android开源框架——内存泄漏检测工具 LeakCanary
  3. Cocos2d-x3.1TestCpp之NewRenderTest Demo分析
  4. 1038. Jewels And Stones
  5. 32位数据源中没有mysql_基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器...
  6. 闭包和高阶函数-函数式编程的基本特征
  7. Fiddler4——手机抓包
  8. SmartSVN使用
  9. winRAR去广告版
  10. 一点点读懂cpufreq(一)
  11. php判断支付宝,使用PHP判断是否为微信、支付宝等移动设备访问代码
  12. Unity2D学习笔记Day12:敌人统一死亡动画+Class的继承(含虚函数virtual,重写override)
  13. k8s拉取镜像规则_【大强哥-k8s从入门到放弃13】Service详解
  14. 名帖347 怀素 草书《大草千字文》
  15. Blockly与Scratch3.0的比较分析
  16. iPython清屏命令
  17. 网络文件共享服务之NFS
  18. iQQ 学习笔记1 :登录、验证码、收消息
  19. DB2处理数据由原来六小时优化到二十分钟(一)
  20. 大数据之linux网络,主机名配置

热门文章

  1. Java开发微信公众号-接口测试帐号接口配置及Java源代码
  2. linux proftpd 用户,proftpd 虚拟帐号的建立及quota
  3. python相册排版_Python3一键排版证件照(1寸照、2寸照) | 原创
  4. Elasticsearch 中为什么选择倒排索引而不选择 B 树索引
  5. WeUI - 微信官方推出的免费开源 UI 组件库,上手简单,风格简约,在微信生态开发轻量项目的绝佳选择
  6. 超级计算机的性能指标
  7. Leaving fence domain… found dlm lockspace /sys/kernel/dlm/rgmanager
  8. (一) linux没有网络的解决办法
  9. Python+Selenium自动化测试之页码,前一页、后一页、翻页
  10. 直播延时是如何产生的?4G摄像头无插件播放视频流媒体服务器EasyDSS超低延时直播的实现方案