100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java的自动类型转换和强制类型转换

java的自动类型转换和强制类型转换

时间:2022-10-04 05:09:01

相关推荐

java的自动类型转换和强制类型转换

在程序运行时,经常需要将一种数值类型进行转换成另一种类型。下面给出了一个合法的转换。

数值之间的合法转换

上图中有6个实心箭头,表示无信息丢失的转换,有三个虚箭头,表示可能有精度丢失的转换。例如123456789是一个大整数,它所包含的整数比float类型所能表达的位数要多,当把这个整数转换为float时,将会得到通道大小的结果,但会丢失精度!

inta=123456789;floatf=a;f=1.23456792E8;当使用上面两个数值进行二元操作时(例如a+f,a是整数,f是浮点数),先要将两个操作数转换为同一种类型,然后在进行计算!●如果两个操作数有一个是double类型,另一个操作数就会转为double类型●否则,如果其中一个操作数是float类型,另一个操作数将会转为float类型●否则,如果其中一个操作数是long类型,另一个操作数将会转为long类型●否则,两个操作数都会转为int类型

强制类型转换

在有的情况下,int类型的值将会自动的转为double类型,但另一方面,有时候也需要将double转为int类型。在java中,允许这种数值之间的转换。当然,这样会丢失一些信息。在这种情况下需要进行强制类型转换(cast)实现这个操作,强制类型转换的语法格式是在圆括号给出想要转换的目标类型。后面紧跟待转换的变量名。例如:

double x = 9.91;

int nx=(int)x;

这样,nx的值为9,强制类型转换通过截断小部分将浮点值转为×××。

如果想对浮点数进行四舍五入计算。以便得到最接近的整数。(在很多情况下,需要使用这种操作方式。),那就需要使用Math.round方法:

double x = 9.91;

int nx=(int)Math.round(x);

现在,nx的值为10.当调用round的时候。仍然需要使用强制转换(int)。其原因是round方法返回的结果是long类型,由于存在信息丢失的可能性。所以只有使用显式的强制类型转换才能将long类型转换为int类型。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。