前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【原创】JAVA数值类型强制类型转换扩展

【原创】JAVA数值类型强制类型转换扩展

作者头像
零点
发布2023-10-18 16:49:43
1340
发布2023-10-18 16:49:43
举报
文章被收录于专栏:微科技微科技

前言

 经常需要将一些数值类型转换为另外一种数值类型。下图给出了数值类型之间的合法转换。

数值型数据类型

ljoe9yuq.png
ljoe9yuq.png

 在上图中有6个实线箭头,表示无信息丢失的转换;另外有3个虚线箭头,表示可能有精度损失的转换。例如,123456789是一个大整数,它包含的位数多于float类型所能表示的位数,将这个整数转换为float类型时,数量级时正确的,但时会损失一些精度。

代码语言:javascript
复制
int n = 123456789;
float f = n; //f 的值为1.234567892EB

 当用一个二元运算符连接两个值时(例如 n+f,n是整数,f是浮点数),先要将两个操作数转换为同一类型,然后在进行计算,通常为小类型转换为大类型。(如浮点型和整数进行连接时,最终的返回值为浮点型)。

 其中七大数值型数据类型分别为:   整数型:byte、short、int、long   浮点型:float(单精度)、doubles(双精度)   字符型:char  各数值型占用内存大小:   1byte = 8bit   1short = 2byte = 16bit   1int = 4byte = 2short = 32bit   1long = 8byte = 4short = 2int = 64bit   1float = 4byte = 32bit   1double = 8byte = 2float = 64bit   1char = 2byte = 16bit

 数值型数据进行拼接时的规则:

  • 如果两个操作数中有一个是double类型,另外一个操作数就会转换为double类型。
  • 否则,如果其中一个操作数是float类型,另外一个操作数就会转换为float类型。
  • 否则,如果其中一个操作数是long类型,另外一个操作数将会转换为long类型。
  • 否则,两个操作数都会被转换为int类型。

数值型强制类型转换

 在必要的时候,int类型的值会自动转换为double类型。但另一方面,有时我们也需要将double类型转换成int类型。在Java中允许这种数据类型的转换,不过可能会丢失一些信息。这种转换要通过强制类型转换来实现,强制类型转换的语法格式是在原括号中指定想要转换的目标类型,后面紧跟需要转换的变量名或者常量。例如:

代码语言:javascript
复制
 double x = 9.997;
 int nx = (int) x;  //nx的值为9

 这样,变量nx的值为9,因为强制类型转换通过截取小数部分将浮点值转换为整型。如果想将一个浮点型转换为整型时进行舍入,可以使用 Math.round() 方法来实现,例如:

代码语言:javascript
复制
 double x = 9.997;
 int nx = (int) Math.round(x);  // nx的值为10

 调用round()方法时,仍需强制类型(int)转换,原因是round()方法返回的是一个long类型,由于存在信息丢失的可能性,所以只有通过一个显式的强制类型转换才能将一个long类型值赋值给int类型的变量。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023年07月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 数值型数据类型
  • 数值型强制类型转换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档