数据类型间的转换
在Java中,整型、浮点型等都是基本的数据类型,它们是能够进行数据类型转换的。下面介绍数据类型之间的数据转换都有哪些转换方式。
1.自动转换
所谓自动转换就是不需要明确指出所要转换的类型是什么,是由Java虚拟机自动来转换的。转换的规则就是小数据类型变大数据类型,但大的数据类型的数据精度有的时候要被破坏。
例如:
•//定义各种数据类型
•int i = 123;
•char c1 = 22;
•char c2 = 'c';
•byte b = 2;
•//自动转换的数据类型
•int n = b;
•long l = i;
2 .强制转换
所谓强制转换,是有一种强制性的,明明不能自动转换,而强制性地进行转换。
例如:
•//定义数据类型
•int i = 22;
•long L= 33;
•//强制转换数据类型
•char c = (char)i;
•int n = (int) L;
•在上面的例子中i原来是一个int整型,但要将它强行转换成char字符型。同样L原来是一个long型,但要将它强行转换成int整型。通过前面的学习已经知道,long型的取值范围最大值可以为2的63次方减1,而int型的取值范围最大值只有2的31次方减1,所以如果L为一个大于2的31次方减1,在强制类型转换时就会丢失精度,使数值发生变化,这个是需要注意的地方。
3.隐含转换
隐含转换和自动转换很相似,Java虚拟机根据数据类型的位数来判断此数据类型是否能装载此数据,如果能,Java就默认进行了转换。
例子1:
•byte b = 111;
例子2:
•int i = 222;
•byte c = (byte) i;
•在上面两条语句中有2个转换,一个是111转换成byte类型的数据库,因为byte类型的数据位数能装载下111,所以能进行转,这就是隐含转换。把222转换成byte类型的c就不能进行隐含转换,因为能进行隐含转换的只能是常量而不能是变量。