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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜班心桥 中级黑马   /  2015-3-12 23:23  /  1069 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. byte b=3;
  2. b=b+2;
  3. b+=2;
复制代码
b=b+2,编译不通过,由于b和2在运算的时候,结果为int类型,无法负责给byte类型的b。
为什么b+=2;编译可以通过呢?这两个赋值语句不是一样的吗?

2 个回复

倒序浏览
b +=2 是赋值语句   内部有个自动类型转换过程   即右边计算出的结果  先进行转换  再赋值给左边
b = b+2  右边的先运算后 得出的结果赋值给左边,  由于在计算过程有个类型自动提升过程,所以其结果为int型,不能赋给左边   需要先进行强转后   才能赋给左边

区别就是   b += 2 内部有个类型自动转换过程
                 
回复 使用道具 举报
谢谢啊,知道了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马