Java数值类型是整个Java系统的重要组成部分,可分为8种数值类型。在java程序员在开发工作中,程序会出现将一种数值类型转换为另一种数值类型需要,所以这些java数值类型之间的转换规则是什么,如何转换,一切java数值类型可以两两转换吗?本文将回答这一系列问题。
介绍如何在这里在转换java数值类型之前,先回顾一下java数值的类型。(1)int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits);(2)float长度数据类型有:单精度(32bitss) float)、双精度(64bitss) double);(3)boolean类型变量的取值如下:ture、false;(4)char数据类型有:unicode字符,16位。
并非所有这些数值类型之间的类型都能两两转换,以下图可以表示Java数值类型之间的转换:
下图说明:图中有六个实箭头表示无数据丢失的转换;三个虚拟箭头表示精度损失的转换。例如,123 456 789是一个大整数,它所包含的位数大于float类型所能表达的位数 。将整形值转换为float类型时,会得到相同大小的结果,但会失去一定的精度。
int n = 123456789;
float f = n; //f is 1.23456792EB
使用上述两个值进行二元操作时(例如)n+f,n为整数,f为浮点),先将两个操作数转换为同一类型,再进行计算。
(1)如果两个操作数中有一个是double类型,那么另一个操作数将转换为double类型;
(2)否则,如果其中一个操作数是float类型,则另一个操作数将转换为float类型。
(3)否则,如果其中一个操作数为long类型,则另一个操作数将转换为long类型
(4)否则,两个操作数都将转换为int 类型。
强制类型转换:
必要时可以在上面看到,int类型的值将自动转换为double类型 。但另一方面,double有时需要转换为inte 。在java当然,允许这个值之间的类型转换可能会丢失一些信息。在这种情况下,需要通过强制类型转换(cast)实现此操作。强制类型转换的语法格式是在圆括号中给出要转换的目标类型,然后关注要转换的变量名。例如:
double x = 9.997;
int nx = (i nt)x:
这样,变量nx 值为10。调用round时,仍需使用强制装换(int)。原因是round方法的返回结果是long类型。由于信息丢失的可能性,只有显示的强制类型转换才能将long类型转换为int类型。如果你试图将一个值从一个类型强制转换为另一个类型,并且超出了目标类型的表示范围,结果将被切断为完全不同的值,例如(byte ) 300 实际值为44。
最后注意一下java数据类型之间的转换规则:(1)java中的所有数字变量都有符号(正负);(2)不允许随意转换类型。只有数字变量可以转换,但不能随意转换;(3)默认情况下,带有小数点的数字变量为double类型;(4)定义float类型必须转换为强制类型;(5)当字节数小的数字变量赋值大于字节数时,不需要强制类型转换;(6)当int变量赋值为char变量时,JVM会以Int型变量值在ASCII码表中找到相应的字符,然后赋值Char型变量。反之亦然。
以上就是对介绍了java数值类型之间的转换。数值类型转换是一个相对基本的内容,也将在java面试中进行调查。我希望这篇文章能在不同程度上帮助你,并在相关内容java培训课程中学数值类型之间转换的操作问题更多,扩展自己java知识库,提高java水平。