A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在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编译器有常量优化机制如果没有超出接收数据类型的范围不报错,是以不会报错;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马