在Java中基本数据类型分为四类八种,即:整数型:byte、short、int、long四种;浮点型:float、double;字符型:char;布尔型:boolean。
多种基本数据类型的数据在参与运算时,会出现自动类型转换(隐式转换)或者 强制类型转换(显式转换)。
其中自动类型转换:byte char short -- int -- long -- float -- double
即:byte 、char、 short三种类型数据在参与运算时会自动提升为int型在进行运算,int型与long型一起运算时会转换成long型,以此类推:当参与运算的多个数据类型不一致时,参与运算的值会自动转换成范围最大的那个类型然后运算。
强制类型转换(显式转换):就是在运算时把取值范围小的强制转换成取值范围大的。
格式:(数据类型) 变量或者常量值;
以下会举例,着重解释强制类型转换要注意的事项。
案例:① byte b1 = 10;
② int b2 = 10;
③ byte b3 = b1 + b2;
④ byte b4 = b1 +(byte)b2;
⑤ byte b5 = 10 + 10;
问以上程序是否会报错,为什么?
分析:③b1是byte型b2是int型,b1+b2在运算的过程中b1会自动类型提升转换成int型,所以b1+ b2结果是int型,结果用byte接收会报错;
④虽然b2是int型强制转换成byte型,但b1+b2在运算的过程中会自动类型提升转换成int型,结果是int型,结果用byte接收会报错;
⑤10 + 10 是常量之间进行运算,java编译器有常量优化机制如果没有超出接收数据类型的范围不报错,是以不会报错; |
|