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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 楠楠 中级黑马   /  2015-9-6 23:31  /  662 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                byte b1=3,b2=4,b;
                b=b1+b2;
                b=3+4;
                哪句是编译失败的呢?为什么呢?

9 个回复

倒序浏览
我是来赚币的。。。
回复 使用道具 举报
这妹子谁家的 好漂亮啊
回复 使用道具 举报
b=b1+b2;    //这句会编译失败,因为b1+b2进行运算时,会自动提升为int运算数据类型,运算结果也自然为int,但是要赋值给b(byte)类型,会编译失败提示损失精度。                  b=3+4;      //编译成功。因为java有常量优化机制,会先进行3+4结果判断是否超出byte取值范围,如果没有超出,则编译通过。
回复 使用道具 举报

         从两方面去回答这个题
         b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
         byte类型的变量在进行运算的时候,会自动类型提升为int类型
           byte b4 = 3 + 4;
         3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
回复 使用道具 举报
第一句话  编译失败
回复 使用道具 举报
小木全 来自手机 中级黑马 2015-9-6 23:42:18
7#
这也是一个班的
回复 使用道具 举报
谢谢大家
回复 使用道具 举报
湛泸007 来自手机 中级黑马 2015-9-7 00:15:36
9#
第一句编译会失败,存在类型转换问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马