千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  基本数据类型的转化异常分析

基本数据类型的转化异常分析

来源:千锋教育
发布人:lxl
时间: 2023-03-21 11:11:58

基本数据类型的转化异常分析

  我们在开发Java项目时,经常会碰到数据类型的转化的情况,而很多初学者或经验不够的程序员,经常会在进行数据类型转换时遇到异常。数据类型转换异常虽然是看似简单的错误,但带来的后果却是不可估量的。所以今天千锋就来给大家讲一下数据类型转化过程中产生的问题该如何解决,以及其他需要注意的地方。

  1. 显式类型转换产生的异常

  首先我们来看下面这个具体的需求,范某某因为偷税漏税被罚款8.83亿,如果程序这么写:

  double money = 8.83; //单位为亿

  int newMoney = (double)money;

  System.out.println(newMoney); // 打印结果为8

  如果我们直接这样进行简单的数据类型转化,那范某某可就高兴了,因为她一下子就可以节省0.83亿!0.83亿,这可是8300万啊,多么庞大的数字,一下子就省出来了!所以这种数据类型转化虽然不会出现代码错误,但肯定是无法满足业务需求的,因为这在浮点数转化整数的过程中会自动舍去小数,造成数据失真!

  隐式类型提升产生的异常

  除了上述这种直接数据类型转化的操作会导致数据精度丢失之外,下面这种计算也可能会让数据出现错误情况。

  double d = 3.14;

  int i = 3;

  i += d;

  System.out.println(i); // 结果为6

  在我们平时的印象中,int类型和double类型进行计算,结果应该为double类型数据,这是不能够使用int类型接收计算结果的。但如果我们使用自增符号(+=)却可以通过编译,并且会去除小数得到一个整数,这也是我们平时可能容易忽略的地方,这里也可能会造成严重的后果的一个小细节。

  数据范围越界产生的异常

  另外我们可能也会碰到下面这样的异常情况:第一行不报错,第三行报错

  long l = 1000000000; //不会保错

  long ll = 10000000000; // 会报错

  之所以会产生上述情况,我们首先要看看两个值分别是多少,l变量值为10亿,ll变量值为100亿,这是第一点。第二点,两个变量的数据类型都是long,但定义的值后面没有加L或者l,所以此时这两个变量默认的数据类型就是int。而我们知道,最后int数据类型的最大范围为21亿多,第三行100亿明显超出了int的长度范围,所以第一行数据可以正常的进行数据类型转化,但第三行却报错了。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>