Java 中基本数据类型转换是指把一种数据类型的值赋给另一种数据类型的变量时,需要进行的数据类型转换。根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。
1. 自动类型转换
自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明,即取值范围小的类型(低精度)赋值给取值范围大的类型(高精度)。如:
通过上例可以说明,要实现自动类型转换,必须同时满足两个条件:一是两种数据类型彼此兼容;二是目标类型的取值范围大于源类型的取值范围。如:
(1)整数类型之间可以实现转换,如byte 类型的数据可以赋值给short、int、long 类型的变量,short、char 类型的数据可以赋值给int、long 类型的变量,int 类型的数据可以赋值给long类型的变量
(2)整数类型转换为float 类型,如byte、char、short、int 类型的数据可以赋值给float类型的变量。
(3)其他类型转换为double 类型,如byte、char、short、int、long、float 类型的数据可以赋值给double 类型的变量。
结论:数据类型可以自动地从低精度转化为高精度而高精度不能自动转为低精度。
不同数值型数据类型间的精度高低顺序排序如下:
在Java 中的小数默认是double 数据类型,float 赋值时要在值后加字母f,long 赋值时要在值后加字母l。
2. 强制类型转换
强制类型转换也叫显式类型转换,指两种数据类型之间的转换需要进行显式地声明。
当两种类型彼此不兼容,或者高精度转为低精度时,自动类型转换无法进行,这时就需要进行强制类型转换。
强制类型转换的格式如下所示:
目标类型变量 =(目标类型)值
在学习强制类型转换之前,先来看一个例子。(www.xing528.com)
【例2.3】将int 类型数据强制转换为byte 数据类型。如文件2-3 所示。
文件2-3 Example03.java
执行结果
4
在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换,如将一个int 类型的数转为byte 类型,这样做极容易造成数据精度的丢失。接下来,通过一个案例来说明。
【例2.4】不采取数据强制类型转换导致数据精度丢失源代码,如文件2-4 所示。
文件2-4 Example04.java
执行结果
多学一招
所谓表达式是指由变量和运算符组成的一个算式。变量在表达式中进行运算时,也有可能发生自动类型转换,这就是表达式数据类型的自动提升,如一个byte 型的变量在运算期间类型会自动提升为int 型,请查看例2.5 文件源代码。
【例2.5】表达式数据类型的自动提升源代码,如文件2-5 所示。
文件2-5 Example05.java
执行结果
b3=99
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。